最近封裝了一款聊天鍵盤油宜,具備錄音,表情怜姿,更多工具等功能慎冤,也看過其他人寫的,但多多少少都有問題沧卢,或者達(dá)不到自己的要求蚁堤,不是沒適配就是彈出來又問題(吐槽一下,哈哈)但狭,干脆就自己重新做了一遍披诗,踩過坑,才知道坑有多深熟空。先看下Demo效果:
這個是仿著微信的來做的藤巢,可應(yīng)用于一般的聊天及評論界面,上面的錄音息罗、表情按鈕都是可以隱藏的掂咒,適配了iPhone X以上的設(shè)備,用起來也比較簡單。
使用說明:
插入這三行代碼即可將鍵盤放在屏幕底部:
self.keyBoardView = [[XBZChatKeyBoardView alloc] initWithNavigationBarTranslucent:NO];
self.keyBoardView.delegate = self;
[self.view addSubview:self.keyBoardView];
隱藏相關(guān)按鈕(默認(rèn)都是顯示狀態(tài)):
self.keyBoardView.showVoice = NO;
self.keyBoardView.showFace = NO;
self.keyBoardView.showMore = NO;
4個協(xié)議方法:
//發(fā)送文本绍刮,考慮到表情(??&[微笑])上傳時需要將原文傳給服務(wù)器温圆,展示的時候才是顯示轉(zhuǎn)換后的文字
- (void)chatKeyBoardViewSendTextMessage:(NSMutableAttributedString *)text originText:(NSString *)originText;
//發(fā)送大表情圖片
- (void)chatKeyBoardViewSendPhotoMessage:(NSString *)photo;
//發(fā)送錄音,這里是完整的音頻路徑
- (void)chatKeyBoardViewSendVoiceMessage:(NSString *)voicePath;
//點(diǎn)擊更多
- (void)chatKeyBoardViewSelectMoreImteTitle:(NSString *)title index:(NSInteger)index;
一孩革、錄音功能:
錄音文件會自動轉(zhuǎn)換成MP3格式岁歉,方便其他平臺共用,錄制完成了會返回一個完整的文件路徑膝蜈,方便上傳使用锅移,里面也提供了相應(yīng)的刪除方法,詳細(xì)可以看XBZAudioRecorder這個類饱搏,在View/Record文件夾下面非剃。錄制中的動畫是根據(jù)當(dāng)前麥克風(fēng)音量來調(diào)節(jié)的,用了一個遮罩效果完成推沸。
二备绽、表情功能
表情默認(rèn)配置了三組,第一組是跟系統(tǒng)的emoji表情一樣的鬓催,第二組是自己添加的圖片(聊天不能缺少斗圖~)肺素,如果是自己來初始化的時候要注意文件命名,我的文件格式是“圖片前綴+序號”宇驾,第三組是emoji圖片倍靡,這個需要一個對應(yīng)的plist文件來做,放到textView里面會轉(zhuǎn)換成文字顯示飞苇,需要顯示到對話框里面時再轉(zhuǎn)換成NSAttributedString來顯示菌瘫。
配置方法:使用單例類XBZChatKeyBoardManager來配置
//默認(rèn)配置
XBZGroupEmojiModel *group1 = [XBZGroupEmojiModel initEmojiWithPlist:@"chatEmojis.plist" image:@"icon_emoji_group1"];
XBZGroupEmojiModel *group2 = [XBZGroupEmojiModel initFaceWithFileName:@"panda" count:10 image:@"icon_emoji_group2"];
XBZGroupEmojiModel *group3 = [XBZGroupEmojiModel initEmojiWithPlist:@"emotion_icons.plist" fileName:@"Expression_" image:@"icon_emoji_group1"];
[self configEmojisData:@[group1, group2, group3]];
如果需要配置其他的,可以修改或者增加這個Model里面對應(yīng)的初始化方法布卡,畢竟命名習(xí)慣可能不一樣雨让,也不強(qiáng)制要求。但要注意的是一定要配置正確忿等,保證表情能加載出來栖忠,否則放到組里面可能會影響后面的表情,導(dǎo)致顯示不出來或者滑動出錯之類的問題贸街!
三庵寞、更多功能
這個里面也默認(rèn)配置了9個項目(好奇寶寶可能會問為啥是9個,因為可以顯示兩頁薛匪,哈哈)捐川,當(dāng)然也可以配置更多的,里面的圖標(biāo)有個對不上逸尖,就將就看了
配置方法:使用單例類XBZChatKeyBoardManager來配置
這里就舉個??古沥,配置一個瘸右,里面就是一個按鈕來做的,分成自然狀態(tài)和高亮狀態(tài)來設(shè)置圖片岩齿,以及設(shè)置文字字號大小
XBZChatMoreItem *item1 = [XBZChatMoreItem initWithNormalImage:@"aio_icons_freeaudio" highlightedImage:nil title:@"電話" font:15];
[self configMoreItems:@[item1]];
還需要注意一點(diǎn)的是使用XBZChatKeyBoardManager配置表情和更多功能的時候一定要在keyBoardView創(chuàng)建之前太颤,否則會出問題!m锷颉龄章!如果需要銷毀這個單例,里面也提供了相應(yīng)的方法進(jìn)行銷毀乞封。
到這里基本就介紹完了做裙,代碼粗糙,還望各位大神不吝賜教肃晚,提提意見啥的菇用,有啥問題也可以留言哦,一起交流一起進(jìn)步陷揪,嘿嘿??。
最后附上Demo的地址杂穷,Demo在此