swift3.0 自定义键盘
...绕了一大圈,又绕回原生来了,今天,学习一下swift3.0语法下的自定义键盘.效果图如下:
其实,很简单,只需要把UITextView(或者UITextField)的inputView属性设置为自定义的视图即可.
这里,我举一个栗子,添加一个自定义的emoji键盘.
思路:a.先来一个UIViewController,用来承载一个ToolBar(只是为了放几个按钮,切换系统键盘和自定义键盘)
b.在该UIViewController上面放一个UITextView即可.更改inputView属性.
c.新建一个UIViewController作为自定义键盘的界面承载.其上放一个UICollectionView布局自定义键盘界面
1:完成a.b两步,比如把UITextView.inputView = UIViewController().view 效果会如下:
2.OK,接下来我找了个emoji.plist文件用来存放emoji表情数据,写了一个model存放表情数据使用,然后在collectionView上显示即可.
其中,重点是如何显示emoji表情,大致如下:
code = dict["code"] as! String? //emoji.plist中的code
//1.从字符串中取出十六进制的数
//创建一个扫描器,扫描器可以从字符串中提取数据
let sanner = Scanner.init(string: code!)
//2.将十六进制转为字符串
var result:UInt32 = 0
sanner.scanHexInt32(&result)
//3.将十六进制转换为emoji字符串
emojiStr = "\(Character.init(UnicodeScalar.init(result)!))"
其实就是使用Scanner扫描转换emoji表情为系统可识别的字符串即可,其实,emoji本质就是一些String.
3.使用MVC在collectionView上显示出表情之后,可以通过闭包回调把选择的表情回调至承载UITextView的控制器中即可.
基本思路就是这么简单. demo在 https://github.com/pheromone/swift3.0-emojiKeyboard
swift3.0 自定义键盘的更多相关文章
- swift3.0自定义相机界面
这是公司上上上一个项目的自定义相机界面,原来是swift2.0写的,今天改为swift3.0,记录一下. 效果图如下: ...
- Swift3.0 自定义tableView复用cell 的写法,与CollectionViewCell的不同,数据model
Model数据 class HospitalModel: NSObject { //后边不赋值 会报错 var imgurl :String = "" var introducti ...
- Swift3.0 功能二 (表情键盘与图文混排)
随着iOS越来越多表情键盘以及图文混排的需求,本文运用Swift3.0系统的实现其功能以及封装调用方法,写的不好,如有错误望各位提出宝贵意见,多谢 项目源码地址: 相关知识点都有标识 项目源码地址 废 ...
- Vue2.0的变化 ,组件模板,生命周期,循环,自定义键盘指令,过滤器
组件模板: 之前: <template> <h3>我是组件</h3><strong>我是加粗标签</strong> </templat ...
- Swift3.0变化分享
Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...
- swift3.0变化总结
Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...
- 【iOS自定义键盘及键盘切换】详解
[iOS自定义键盘]详解 实现效果展示: 一.实现的协议方法代码 #import <UIKit/UIKit.h> //创建自定义键盘协议 @protocol XFG_KeyBoardDel ...
- Swift2.3 --> Swift3.0 的变化
Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...
- iOS 日期处理 (Swift3.0 NSDate)
处理日期的常见情景 NSDate -> String & String -> NSDate 日期比较 日期计算(基于参考日期 +/- 一定时间) 计算日期间的差异 拆解NSDate ...
随机推荐
- 发送http请求,get和post两种请求方式
GET请求 GetMethod getMethod=null; String datas = "json=" + plain; HttpClient httpClient = ne ...
- c# 操作文本文件
计算机在最初只支持ASCII编码,但是后来为了支持其他语言中的字符(比如汉字)以及一些特殊字符(比如€),就引入了Unicode字符集.基于Unicode字符集的编码方式有很多,比如UTF-7.UTF ...
- Utils--Cookie工具类
Utils--Cookie工具类 package com.taotao.manage.util; import java.io.UnsupportedEncodingException; import ...
- Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)
一.各库功能说明 pdfminer----用于读取pdf文件的内容,python3安装pdfminer3k jieba----用于中文分词 wordcloud----用于生成词云 matplotlib ...
- Apache+Tomcat+mod_jk配置教程
0.说明 首先我们要弄明白mod_jk的作用是反向代理,而其实使用httpd.conf中的<VirtualHost>标签就可以实现反向代理,为什么还要多搞个mod_jk那么麻烦做反向代理. ...
- Struts 2 初步入门(一)
搭建Struts 2环境步骤 下载jar包----->创建web项目---->创建并完善相关配置文件---->创建action并测试启动 下载jar包访问网站:http://stru ...
- jackSon注解– @JsonInclude 注解不返回null值字段
@Data @JsonInclude(JsonInclude.Include.NON_NULL) public class OrderDTO { private String orderId; @Js ...
- Mysql 在 Windows环境下安装:应用程序无法正常启动0xc000007b
DirectX 修复工具 v3.7增强版 链接: https://pan.baidu.com/s/135pZUNwpXcMZjyLB41sQCg 密码: gtb5
- oracle servicename 与SID的区别
http://blog.csdn.net/z69183787/article/details/25706269
- OO Summary Ⅲ
规格化设计的发展历史 (这一部分并没有找到答案,于是参考了好黄和温莎莎的blogs) 1950年代,第一次分离,主程序和子程序的分离程序结构模型是树状模型,子程序可先于主程序编写.通过使用库函数来简化 ...