iOS -自定義鍵盤系列之四自定義帶表情的鍵盤

前言##

本文介紹是自定義鍵盤的系列的續(xù)集伴栓,如果想了解鍵盤的更多知識可以查看
自定義鍵盤系列之一怎樣自定義輸入文本框

自定義鍵盤系列之二鍵盤自適應(yīng)響應(yīng)者

自定義鍵盤系列之三自定義無表情的鍵盤

表情鍵盤的效果圖

自定義表情鍵盤.png
自定義表情鍵盤.png

動態(tài)示意圖
![Uploading 自定義表情鍵盤_959782.png . . .]](http://upload-images.jianshu.io/upload_images/1886288-6deff37ea1443ecc.gif?imageMogr2/auto-orient/strip)

表情鍵盤分析###

表情鍵盤與普通鍵盤相比需要考慮以下一些問題:
1、普通鍵盤和表情鍵盤切換事件,改變下面鍵盤View?
2狮惜、表情包從哪里來?
3、表情鍵盤顯示的View怎么寫,以及表情的操作怎么辦?
4、表情在輸入框中的顯示怎么弄(編碼與轉(zhuǎn)碼)?

具體實現(xiàn)##

解決問題 1狰住、 普通鍵盤和表情鍵盤切換事件,改變下面鍵盤View?

自定義切換按鈕,并且在按鈕點擊的時候響應(yīng)事件齿梁,判斷顯示自定義表情InputView還是系統(tǒng)的鍵盤InputView

- (void)faceButtonClick:(UIButton *)faceButton
{
faceButton.selected = !faceButton.isSelected;
self.bottomLine.hidden = !faceButton.selected;
[self.inputTextView resignFirstResponder];
self.inputTextView.inputView = faceButton.selected?self.faceView : nil;
[self.inputTextView becomeFirstResponder];
}

這段代碼很重要催植,首先切換按鈕的選中狀態(tài),通過是否選中來判斷是否更換InputView(就是工具條下面的鍵盤)

//調(diào)用鍵盤keyboardWillChangeFrame  
  [self.inputTextView resignFirstResponder];  
 //改變輸入View那個(nil表示系統(tǒng)文本鍵盤)
 self.inputTextView.inputView = faceButton.selected?self.faceView : nil;  
//調(diào)用鍵盤keyboardWillChangeFrame
[self.inputTextView becomeFirstResponder]; 

解決問題 2勺择、表情包從哪里來?

表情包有兩種來源方式创南,根據(jù)公司的需求來定:
A、蘋果的表情編碼省核,可以寫成plist文件(這個網(wǎng)上一堆資料)(本文采用)
B稿辙、公司給定圖片,也可以采用同樣的方式加載(項目采用)
最終結(jié)果就是需要一個數(shù)組數(shù)據(jù)用來顯示到自定義的表情FaceView上面

解決問題 3气忠、表情鍵盤顯示的View怎么寫邻储,以及表情的操作怎么辦?

首先思考,可以滾動旧噪,肯定與UIScrollView有關(guān)吨娜,但是又可能有多個頁面的表情,所以采用自定義單個面板的方式計算每個面板顯示多少個表情淘钟,需要幾個面板宦赠。同時每個表情圖都需要被點擊,所以都設(shè)置成按鈕。

基本結(jié)構(gòu)如下:


鍵盤View的基本結(jié)構(gòu).png
鍵盤View的基本結(jié)構(gòu).png

詳情代碼請直接下載demo查看:
自定義鍵盤-LZBKeyBoardView

解決問題4勾扭、表情在輸入框中的顯示表情按鈕(編碼與轉(zhuǎn)碼)?

如果采用UI圖片毡琉,那么就直接顯示按鈕的圖片就好;
如果采用蘋果編碼方式妙色,就需要編碼與轉(zhuǎn)碼桅滋,看到這里就感覺頭大,但是沒有關(guān)系燎斩,我已經(jīng)寫好一個分類給大家用虱歪,不用當(dāng)心

 //將十六進(jìn)制的編碼轉(zhuǎn)為emoji字符
  + (NSString *)emojiWithByIntCode:(int)intCode
{
int sym = EMOJI_CODE_TO_SYMBOL(intCode);
NSString *codeString = [[NSString alloc]initWithBytes:&sym length:sizeof(sym) encoding:NSUTF8StringEncoding];
if (codeString == nil) {
    codeString = [NSString stringWithFormat:@"%C", (unichar)intCode];
}
return codeString;
}

將十六進(jìn)制字符串編碼轉(zhuǎn)為emoji字符

  + (NSString *)emojiWithByStringCode:(NSString *)stringCode
  {
   char *charCode = (char *)stringCode.UTF8String;
   long intCode = strtol(charCode, NULL, 16);
   return [self emojiWithByIntCode:(int)intCode];
 }

小建議###

我覺得每個公司都應(yīng)該有自己的一套鍵盤,小編在這里給大家整理出來了一套栅表,但是可能不一定適合您的項目笋鄙,但是依然具有參考價值,真正合適的是要自己寫的怪瓶。

詳情代碼請直接下載demo查看:
自定義鍵盤-LZBKeyBoardView

最后贈言###

star 是對我們程序猿最大的鼓勵

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末萧落,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子洗贰,更是在濱河造成了極大的恐慌找岖,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敛滋,死亡現(xiàn)場離奇詭異许布,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绎晃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蜜唾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庶艾,你說我怎么就攤上這事袁余。” “怎么了咱揍?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵颖榜,是天一觀的道長。 經(jīng)常有香客問我煤裙,道長掩完,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任硼砰,我火速辦了婚禮藤为,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夺刑。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布遍愿。 她就那樣靜靜地躺著存淫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沼填。 梳的紋絲不亂的頭發(fā)上桅咆,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機(jī)與錄音坞笙,去河邊找鬼岩饼。 笑死,一個胖子當(dāng)著我的面吹牛薛夜,可吹牛的內(nèi)容都是我干的籍茧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼梯澜,長吁一口氣:“原來是場噩夢啊……” “哼寞冯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晚伙,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤吮龄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咆疗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漓帚,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年午磁,在試婚紗的時候發(fā)現(xiàn)自己被綠了尝抖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡漓踢,死狀恐怖牵署,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喧半,我是刑警寧澤奴迅,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站挺据,受9級特大地震影響取具,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扁耐,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一暇检、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧婉称,春花似錦块仆、人聲如沸构蹬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庄敛。三九已至,卻和暖如春科汗,著一層夾襖步出監(jiān)牢的瞬間藻烤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工头滔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留怖亭,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓坤检,卻偏偏與公主長得像兴猩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子缀蹄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 2017.02.22 可以練習(xí)峭跳,每當(dāng)這個時候,腦袋就犯困缺前,我這腦袋真是神奇呀蛀醉,一說讓你做事情,你就犯困衅码,你可不要太...
    Carden閱讀 1,342評論 0 1
  • 前言## 本文是在前文的基礎(chǔ)上展開的拯刁,如果對自定義UITextView不熟悉,可以參考前文: 自定義鍵盤系列之一怎...
    摸著石頭過河_崖邊樹閱讀 660評論 0 1
  • 1逝段、說說ReactiveCocoa 2 - CocoaChina 2垛玻、這樣好用的ReactiveCocoa,根本停...
    Funnyer閱讀 269評論 0 1
  • 我跳上遲到的公車 匆匆的離去 就如我匆匆的來 拋下了雨中小站 和忠誠的站牌 這才發(fā)現(xiàn)帶上車 有快樂 也有悲哀 直到...
    煙雨yx閱讀 595評論 0 3
  • 原因當(dāng)時是小系統(tǒng)奶躯,沒注意權(quán)限分配和部分命令加鎖 原本目的 也我自己煩躁的原因帚桩,沒切換到目錄下去執(zhí)行絕對路徑,結(jié)果 ...
    Godtoy閱讀 143評論 0 0