设为首页 加入收藏

TOP

iOS IM开发建议(三)添加一个自定义键盘
2017-10-13 10:33:00 】 浏览:1785
Tags:iOS 开发 建议 添加 一个 定义 键盘

  各类的主流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。

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于JS交互--调用h5页面,点击页.. 下一篇iOS 疑难杂症 — — 推送本地国际..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目