最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于iOS自帶九宮格拼音鍵盤和Emoji表情之間的一些坑

 更新時(shí)間:2018年05月19日 08:42:37   作者:KANGZUBIN  
這篇文章主要給大家介紹了關(guān)于iOS自帶九宮格拼音鍵盤和Emoji表情之間的一些坑文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

發(fā)現(xiàn)問題

最近產(chǎn)品提了一個需求:要求某個“輸入框”禁止輸入 Emoji 表情,我們能想到的方案是:在 UITextField 的 textField:shouldChangeCharactersInRange:replacementString: 代理方法中判斷即將輸入的字符串是否包含 Emoji 表情,如果包含,就在該方法中返回 NO,不允許輸入。

關(guān)于如何判斷一字符串是否包含 Emoji 表情的方法,網(wǎng)上已經(jīng)有很多代碼片段,一般是通過 Unicode 編碼范圍來判斷 ,詳見這里:https://gist.github.com/cihancimen/4146056 ,方法名記為:

- (BOOL)stringContainsEmoji:(NSString *)string;

按照上述思路開發(fā)完后,Emoji 表情確實(shí)是被限制住無法輸入了,但是當(dāng)把鍵盤切換為 iOS 系統(tǒng)自帶的九宮格拼音鍵盤準(zhǔn)備輸入漢字時(shí),卻發(fā)現(xiàn)拼音無法輸入。這是怎么回事?

解決過程

首先通過觀察系統(tǒng)自帶拼音鍵盤的行為,可以發(fā)現(xiàn),當(dāng)通過拼音來輸入漢字時(shí),系統(tǒng)會先在輸入框中“預(yù)輸入”拼音字母作為占位,等用戶在鍵盤上選中漢字時(shí),輸入框中的占位“拼音字母”就會被替換為所對應(yīng)的漢字,如下圖:

通過斷點(diǎn)調(diào)試我們還發(fā)現(xiàn),在輸入拼音過程中,以“知識小集”(zhishixiaoji)為例,當(dāng)我們通過點(diǎn)擊第 9 個鍵來輸入字母 z 時(shí),在 UITextField 的代理方法中獲取到的即將輸入的字符不是 z ,而是一個符號 ➒ ,而輸入結(jié)束后(textFieldDidChange:)該符號 ➒ 就會被替換為所對應(yīng)的字母,然后當(dāng)點(diǎn)擊第 4 個鍵來輸入字母 h 時(shí),同樣地得到即將輸入的字符為 ➍ ,然后再被替換為 h,以此類推…

我們猜測,蘋果之所以這么做是因?yàn)椋瑢τ诰艑m格拼音鍵盤,一個鍵代表著 3 或 4 個字母,當(dāng)你點(diǎn)擊一個鍵時(shí),它并不知道你要輸入那個字母,所以用一個帶圓圈的數(shù)字符號作為臨時(shí)占位,等輸入結(jié)束時(shí)才替換為相應(yīng)的字母。

在九宮格拼音鍵盤中,”ABC” 鍵 ~ “WXYZ” 鍵所對應(yīng)的臨時(shí)占位符號分別為 ➋➌ … ➒ ,表情 “^-^” 鍵所對應(yīng)的為符號 ☻ ,而這些符號在 stringContainsEmoji: 方法中剛好都被判為是 Emoji,所以當(dāng)輸入框禁止輸入 Emoji 表情時(shí),就會導(dǎo)致拼音也無法輸入。

解決方案

就是在 Emoji 判定方法中,過濾掉上述符號(對應(yīng)的 Unicode 編碼為 U+278b ~ U+2792 和 U+263b),如下:

但我們發(fā)現(xiàn)系統(tǒng)自帶的“全鍵盤拼音輸入”不會有上述問題,因?yàn)槊總€鍵都只代表一個字母:

而且,國內(nèi)常用的第三方輸入法也不會有這個問題,因?yàn)樗鼈儾粫谳斎肟蛑小邦A(yù)輸入”拼音字符(而是把拼音顯示在鍵盤上方),只有等用戶選中漢字時(shí),才把漢字填寫到輸入框中,如下(搜狗輸入法):

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • iOS中UITableview錯位的問題怎么修復(fù)

    iOS中UITableview錯位的問題怎么修復(fù)

    這篇文章主要介紹了iOS中UITableview錯位的問題以及修復(fù)方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-01-01
  • iOS開發(fā)教程之Status Bar狀態(tài)欄設(shè)置的方法匯總

    iOS開發(fā)教程之Status Bar狀態(tài)欄設(shè)置的方法匯總

    iOS 的 Status Bar 狀態(tài)欄是一個比較坑的地方,所以下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)教程之Status Bar狀態(tài)欄設(shè)置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子

    iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子

    這篇文章主要介紹了 iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子,代碼是通過繼承UIButton,然后再重寫layoutSubviews方法,對自帶的圖片和titleLabel進(jìn)行重新的layout。下面通過本文給大家分享下實(shí)現(xiàn)代碼
    2016-12-12
  • ios UITableView 自定義右滑刪除的實(shí)現(xiàn)代碼

    ios UITableView 自定義右滑刪除的實(shí)現(xiàn)代碼

    這篇文章主要介紹了ios UITableView 自定義右滑刪除的實(shí)現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Objective-C中字符串NSString的常用操作方法總結(jié)

    Objective-C中字符串NSString的常用操作方法總結(jié)

    這篇文章主要介紹了Objective-C中字符串NSString的常用操作方法總結(jié),Objective-C中NSString和NSMutableString這兩個類下包含了操作字符串的大多數(shù)方法,需要的朋友可以參考下
    2016-04-04
  • ios電子書翻頁效果代碼詳解

    ios電子書翻頁效果代碼詳解

    這篇文章主要介紹了ios電子書翻頁效果代碼實(shí)現(xiàn)過程以及對應(yīng)的代碼講解,有需要的朋友參考下。
    2018-02-02
  • iOS用UITextField切換明文/密文顯示時(shí)末尾空白的問題解決

    iOS用UITextField切換明文/密文顯示時(shí)末尾空白的問題解決

    最近在工作中遇到一個問題,利用UITextField切換明文/密文顯示時(shí)發(fā)現(xiàn)字符串后面會出現(xiàn)一段空白,所以下面這篇文章主要給大家介紹了iOS用UITextField切換明文/密文顯示時(shí)末尾空白問題的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • 詳解Swift 之clipped是什么如何用

    詳解Swift 之clipped是什么如何用

    這篇文章主要介紹了詳解Swift 之clipped是什么如何用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • iOS中使用對象的弱引用示例代碼

    iOS中使用對象的弱引用示例代碼

    這篇文章主要給大家介紹了關(guān)于iOS中使用對象的弱引用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • iOS通過UIDocumentInteractionController實(shí)現(xiàn)應(yīng)用間傳文件

    iOS通過UIDocumentInteractionController實(shí)現(xiàn)應(yīng)用間傳文件

    這篇文章主要為大家介紹了iOS通過UIDocumentInteractionController實(shí)現(xiàn)應(yīng)用間傳文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01

最新評論

探索| 吴川市| 泉州市| 云南省| 高雄市| 日照市| 开封市| 鄂托克旗| 故城县| 平陆县| 五指山市| 万全县| 藁城市| 莲花县| 九龙城区| 宜兰市| 宜黄县| 黄陵县| 西平县| 泗水县| 阿图什市| 新邵县| 安塞县| 博乐市| 鄢陵县| 临沧市| 海城市| 湖州市| 永城市| 珠海市| 叙永县| 读书| 鄄城县| 武冈市| 黎平县| 宣威市| 永仁县| 高雄县| 敦化市| 巧家县| 九龙县|