/KeyboardforChat

仿微信聊天键盘,无污染,无任何第三方,使用简单

Primary LanguageObjective-C

KeyboardForChat

仿微信聊天键盘。
优点:无污染,无任何第三方,使用简单。

#特性

  1. 支持语音、表情、more,并且可以关闭、打开。
  2. 单个主题表情采用collectionView,节约内存空间。整体实现是ScrollView+collectionView
  3. 聊天输入框支持placehold
  4. 支持在任意的控制器里面添加,但是要注意在初始化方法中传入的frame.
  5. 支持作为聊天键盘和点击评论按钮从屏幕外弹出键盘使用。
  6. 支持emoji表情、自定义表情。

控件使用效果

![](2016-04-08 18_58_24.gif)

控件使用步骤

代码

  1. 导入KeyBoard文件夹
  2. 资源文件是 emotion.plist 和 face.plist 图片在 Assets.xcassets
  3. 导入ChatKeyBoard.h即可使用,具体参考demo

添加数据源

    /****************************************************************
     *  关于初始化方法
     *
     *  1,如果只是一个带导航栏的页面,且导航栏透明。
           或者根本就没有导航栏
     *
     *  使用  [ChatKeyBoard keyBoard]; 
             [ChatKeyBoard keyBoardWithNavgationBarTranslucent:YES]
     *       [ChatKeyBoard keyBoardWithParentViewBounds:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]
     *
     *
     *  2,如果只是一个带导航栏的页面,导航栏不透明
     
     * 使用  [ChatKeyBoard keyBoardWithNavgationBarTranslucent:NO]
            [ChatKeyBoard keyBoardWithParentViewBounds:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height-64)]
     *
     *
     *  3, 如果页面顶部还有一些标签栏,类似腾讯视频、今日头条、网易新闻之类的
     *
     * 请使用  [ChatKeyBoard keyBoardWithParentViewBounds:bounds]
        传入子视图控制器的bounds
     *
     ******************************************************************/

    self.chatKeyBoard = [ChatKeyBoard keyBoard];
    self.chatKeyBoard.delegate = self;
    self.chatKeyBoard.dataSource = self;
    
    self.chatKeyBoard.placeHolder = @"请输入消息,请输入消息,请输入消息,请输入消息,请输入消息,请输入消息,请输入消息,请输入消息";
    
    /*
     *  支持切换评论键盘
     *  self.chatKeyBoard.keyBoardStyle = KeyBoardStyleComment;
     *
     *  则可以使用下面两个方法,开启评论和关闭评论键盘
     - (void)keyboardUpforComment;
     - (void)keyboardDownForComment;
     */
     
    /*
     *  支持外部操纵键盘  (这两个方法是在正常聊天界面,非评论)
    - (void)keyboardUp;
    - (void)keyboardDown;
     */
    
    [self.view addSubview:self.chatKeyBoard];

实现数据源代理

- (NSArray<MoreItem *> *)chatKeyBoardMorePanelItems
{
    MoreItem *item1 = [MoreItem moreItemWithPicName:@"sharemore_location" highLightPicName:nil itemName:@"位置"];
    MoreItem *item2 = [MoreItem moreItemWithPicName:@"sharemore_pic" highLightPicName:nil itemName:@"图片"];
    MoreItem *item3 = [MoreItem moreItemWithPicName:@"sharemore_video" highLightPicName:nil itemName:@"拍照"];
    MoreItem *item4 = [MoreItem moreItemWithPicName:@"sharemore_location" highLightPicName:nil itemName:@"位置"];
    MoreItem *item5 = [MoreItem moreItemWithPicName:@"sharemore_pic" highLightPicName:nil itemName:@"图片"];
    MoreItem *item6 = [MoreItem moreItemWithPicName:@"sharemore_video" highLightPicName:nil itemName:@"拍照"];
    MoreItem *item7 = [MoreItem moreItemWithPicName:@"sharemore_location" highLightPicName:nil itemName:@"位置"];
    MoreItem *item8 = [MoreItem moreItemWithPicName:@"sharemore_pic" highLightPicName:nil itemName:@"图片"];
    MoreItem *item9 = [MoreItem moreItemWithPicName:@"sharemore_video" highLightPicName:nil itemName:@"拍照"];
    return @[item1, item2, item3, item4, item5, item6, item7, item8, item9];
}
- (NSArray<ChatToolBarItem *> *)chatKeyBoardToolbarItems
{
    ChatToolBarItem *item1 = [ChatToolBarItem barItemWithKind:kBarItemFace normal:@"face" high:@"face_HL" select:@"keyboard"];
    
    ChatToolBarItem *item2 = [ChatToolBarItem barItemWithKind:kBarItemVoice normal:@"voice" high:@"voice_HL" select:@"keyboard"];
    
    ChatToolBarItem *item3 = [ChatToolBarItem barItemWithKind:kBarItemMore normal:@"more_ios" high:@"more_ios_HL" select:nil];
    
    ChatToolBarItem *item4 = [ChatToolBarItem barItemWithKind:kBarItemSwitchBar normal:@"switchDown" high:nil select:nil];
    
    return @[item1, item2, item3, item4];
}

- (NSArray<FaceThemeModel *> *)chatKeyBoardFacePanelSubjectItems
{
    return [FaceSourceManager loadFaceSource];
}

##控件里面的一些View可以自己定制,里面只是稍微演示 PanelBottomView OfficialAccountToolbar

##控件可以根据业务需要,更换业务模型 MoreItem
ChatToolBarItem
FaceThemeModel
FaceSourceManager

##感谢
MessageDisplayKit JSQMessagesViewController