iOS IM开发建议添加一个自定义键盘

Posted akforsure

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。

 

以上是关于iOS IM开发建议添加一个自定义键盘的主要内容,如果未能解决你的问题,请参考以下文章

环信IM集成指南iOS端常见问题整理

环信IM集成指南iOS端常见问题整理

ios开发之--仿(微信)自定义表情键盘

iOS 键盘扩展 - 向标准键盘添加按钮(系统范围的输入附件视图)

iOS 自定义键盘抛出异常

iOS 8 自定义键盘扩展 UIKeyboardType