• iOS IM开发建议(三)添加一个自定义键盘


      各类的主流IM,都有自己定义的键盘:有表情键盘,选图片的键盘。其实都是一个inputView。  

      首先,我们要确定,我们的键盘是输入框调用的。也就是,我们可以设置的是某一个textView的inputView。

    // 让键盘进入编辑状态,替换输入源为自定义的fv
    // fv 是一个自定义的UIView
    - (void)callFaceKeyBoard:(UIButton *)button {
        [ktextView becomeFirstResponder];
        ktextView.inputView = fv;
        [ktextView reloadInputViews];
        [ktextView.inputView becomeFirstResponder];// 把自定义键盘设置为第一响应
    }

      现在这个键盘是调出来了。那我们看看键盘怎么实现。

     1 .h
     2 #import <UIKit/UIKit.h>
     3 
     4 @interface FaceKeyboardView : UIView
     5 // 点击了哪一个表情
     6 @property(nonatomic,copy)void (^TapActionBlock)(NSInteger faceID);
     7 // 发送信息
     8 @property(nonatomic,copy)void (^SendEmojiBlock)();
     9 
    10 - (instancetype)initWithFrame:(CGRect)frame faceArray:(NSArray *)facesArray;
    11 @end
    12 
    13 
    14 
    15 .m
    16 
    17 #import "FaceKeyboardView.h"
    18 @implementation FaceKeyboardView{
    19     NSMutableArray * dataArray;// 表情的资源数组
    20     UIScrollView * scrollView;// 主的选折页面
    21     UIButton * sendButton;// 发送按钮
    22 }
    23 // 这个一定要实现 而且要设置YES
    24 - (BOOL)canBecomeFirstResponder {
    25     return YES;
    26 }
    27 - (instancetype)initWithFrame:(CGRect)frame faceArray:(NSArray *)facesArray{
    28     self = [super initWithFrame:frame];
    29     if(self) {
    30         //设置发送按钮
    31                code...
    32         //设置主体内容
    33         [self setScrollViewContent:facesArray];
    34     }
    35     return self;
    36 }
    37 
    38 - (void)setScrollViewContent:(NSArray *)array {
    39     //这里布置好每一个表情的view 添加点击事件
    40 }
    41 
    42 - (void)touchThisView:(UIGestureRecognizer *)tap {
    43     if([tap.view isKindOfClass:[UIImageView class]])
    44     if(self.TapActionBlock) {
    45         self.TapActionBlock(tap.view.tag);
    46     }
    47 }
    48 
    49 - (void)send:(UIButton *)button {
    50     if(self.SendEmojiBlock){
    51         self.SendEmojiBlock();
    52     }
    53 }
    54 
    55 @end
    56             

      到这里,只要实现block,把对应的东西添加到textView里面就好了。

      当然要关掉它的话,就把textView的inputView设置为nil。

  • 相关阅读:
    php数组到json的转变
    微信小程序获取微信绑定的手机号
    微信小程序授权登录
    用海豚框架(DolphinPHP)实现单/多图片上传时,如何获得图片路径
    数据库索引-简单了解
    php将二维数组转换成我想要的一维数组
    php的八大数据类型
    单例模式
    Springboot配置Sqlserver
    WinForm 文件操作
  • 原文地址:https://www.cnblogs.com/akforsure/p/5509671.html
Copyright © 2020-2023  润新知