你的位置:首页 > 操作系统

[操作系统]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 @end12 13 14 15 .m16 17 #import "FaceKeyboardView.h"18 @implementation FaceKeyboardView{19   NSMutableArray * dataArray;// 表情的资源数组20   UIScrollView * scrollView;// 主的选折页面21   UIButton * sendButton;// 发送按钮22 }23 // 这个一定要实现 而且要设置YES24 - (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 @end56       

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

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