在網路上爬了許多限制UITextField輸入文字的方法,

其中一種是使用textfield delegate裡的shouldChangeCharactersInRange方法,

若按鍵盤上方quick type中的文字來輸入的話,

這個方法就會失效,並且用注音輸入中文字時會有諸多問題。

最後解決方法如下:

先在textField加入一個方法textFieldDidChange:

實做textFieldDidChange:方法

這個方法主要是忽略還沒打完而被選起來的字,
就能得到實際輸入的字的長度。

2016/03/02 更新:
後來得知似乎除了中文,
韓文與日文輸入似乎也會有同樣的問題,
而其他直接輸入的語言又不會有被選起來的問題(如英文是每個字母直接打上去),
所以其實這段code可以在精簡成:

如此一來這個判斷對任何語系都適用了!