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

  • 相关阅读:
    Java-数组
    排序-冒泡排序
    排序-选择排序
    Java-基础
    Java-Html-session
    Java-API
    Tomcat-常用设置
    Tomcat目录结构
    TOMCAT-安装配置
    Java-public
  • 原文地址:https://www.cnblogs.com/akforsure/p/5509671.html
Copyright © 2011-2022 走看看