iOS 聊天表情鍵盤

2021-09-08 14:31:05 字數 2379 閱讀 2971

通過uikeyboardwillchangeframenotification通知,監聽鍵盤的改變,同時可以得到鍵盤的frame和動畫的持續時間,

新建鍵盤頂部工具條yscompose*******,預設在底部,y值隨著鍵盤的改變而改變,會一直顯示在鍵盤的最上面,動畫持續時間使用步驟一通知得到的時間

新建乙個存放表情的ysemoticonkeyboard(由ysemoticonlistview + ysemoticontabbar)整體view,替換掉原生的鍵盤。其中ysemoticonlistview指的是表情列表,ysemoticontabbar指的是表情型別,如:浪小花、預設表情、qq表情等。

ysemoticonlistview由uiscrollview+uipagecontroller 組成。uiscrollview存放著由ysemoticonpageview裝著很多表情(button)的列表組成。

所有的介面控制操作,都封裝在yscomposeviewcontroller的控制器中里。

1.鍵盤通知

列印一下鍵盤的uikeyboardwillchangeframenotification通知,我們可以得到鍵盤的frame和動畫的持續時間。

, }";

uikeyboardcenterbeginuserinfokey = "

nspoint: ";

uikeyboardcenterenduserinfokey = "

nspoint: ";

uikeyboardframebeginuserinfokey = "

nsrect: , }";

uikeyboardframeenduserinfokey = "

nsrect: , }";

uikeyboardislocaluserinfokey = 1

;}}

鍵盤的frame和動畫的持續時間

nsdictionary *userinfo =notification.userinfo;

//動畫的持續時間

double duration =[userinfo[uikeyboardanimationdurationuserinfokey] doublevalue];

//鍵盤的frame

cgrect keyboardf = [userinfo[uikeyboardframeenduserinfokey] cgrectvalue];

2.替換掉原來的鍵盤

self.textview.inputview == nil : 使用的是系統自帶的鍵盤

self.textview.inputview = self.emoticonkeyboard; 指的是用表情view替換掉原來的鍵盤

懶載入乙個view

#pragma mark - 懶載入

- (ysemoticonkeyboard *)emoticonkeyboard

return

_emoticonkeyboard;

}

替換掉原來的鍵盤

/*

* * 切換鍵盤 */

- (void

)switchkeyboard

else

//開始切換鍵盤

self.switchingkeybaord =yes;

//退出鍵盤

[self.textview endediting:yes];

//結束切換鍵盤

self.switchingkeybaord =no;

dispatch_after(dispatch_time(dispatch_time_now, (int64_t)(

0.1 * nsec_per_sec)), dispatch_get_main_queue(), ^);

}

1.yscomposeviewcontroller :發微博controller

yscompose*******:鍵盤頂部的工具條

ysemoticonkeyboard:表情鍵盤(整體): ysemoticonlistview + ysemoticontabbar

ysemoticonlistview:表情列表,由ysemoticonpageview + 分頁

ysemonticontabbar:表情底部tabbar,切換不同的表情

2.ysemoticonlistview結構,上面由乙個ysemoticonpageview,載入一頁的列表,有多少頁表情列表,就有多少個pageview。底部是乙個分頁控制項uipagecontrol。

iOS開發鍵盤表情處理

概述 原理 將獲取到的字串包含表情進行utf 8轉碼傳給伺服器,然後將伺服器返回的資料解碼,就可以將表情進行上傳 解析等操作,節省大量時間 應用場景 string字串 stringbyaddingpercentescapesusingencoding nsutf8stringencoding 編碼 ...

vue聊天框傳送表情

1.在傳送訊息的時候,判斷傳送的訊息是不是表情,表情的type 3,content 愛心 這樣儲存在資料庫中 2.在獲取聊天記錄的時候,判斷type 3,處理表情,else if chatitem.type 3 src emojiurl emojimap chatitem.content style...

聊天框richtextfield4 6表情錯位

解決方法1 以flash 版本10 編譯都是沒有問題的 解決方法2 flash 版本11 swf version 13 有問題 估計textfield scroll的時候 行內 y值變化和flash10有區別 com riaidea text spriterenderer.as檔案 private ...