zoukankan      html  css  js  c++  java
  • 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  

  • 相关阅读:
    547. Friend Circles
    399. Evaluate Division
    684. Redundant Connection
    327. Count of Range Sum
    LeetCode 130 被围绕的区域
    LeetCode 696 计数二进制子串
    LeetCode 116 填充每个节点的下一个右侧节点
    LeetCode 101 对称二叉树
    LeetCode 111 二叉树最小深度
    LeetCode 59 螺旋矩阵II
  • 原文地址:https://www.cnblogs.com/shaoting/p/6548672.html
Copyright © 2011-2022 走看看