2010-05-05 51 views
2

我想根據文本字段中的內容打開/關閉自動校正。例如,如果用戶正在鍵入像「Machine tools」這樣的短語,我希望自動糾正功能處於打開狀態(對於其餘字詞,她將鍵入),但是如果我感受到 - 說 - 網絡的開始地址如「www.mach ..」我想關閉自動校正。正在編輯UITextField時切換UITextAutoCorrectionType

我嘗試在接收UITextFieldTextDidChangeNotification時通過基於輸入的內容切換文本字段上的autoCorrectionType。雖然該屬性在文本字段上的實際值發生了變化(通過NSLog驗證),但實際的修正行爲不受影響。因此,如果在編輯會話開始時啓用自動更正,即使在將文本字段設置爲UITextAutoCorrectionTypeNo後,它仍然如此。因此,「www.foogle ...」被糾正爲「www.google ..」,這在我的書中可能並不總是令人滿意的。

那麼有沒有人找到一種方法來啓用/禁用自動更正(在編輯時)在文本字段?

謝謝。

+0

我沒有經驗試圖做到這一點。建議雖然:1)你有沒有在設備上測試,而不僅僅是在模擬器?可能是差異。那裏。 2)雖然很醜,但您可能可以使用一對帶有兩種不同設置值的文本字段,並且可以在兩者之間無縫過渡,隱藏未使用的文本並更新可見文本/第一響應者狀態。 – wkw 2010-05-05 15:51:44

回答

6

UITextView必須在內部重新加載它不會自動執行的內容,因此我們必須從外部觸發它。一種方法,我發現是辭職,再次成爲第一個響應者:

[textView resignFirstResponder]; 
// UITextAutoCorrectionType change 
[textView becomeFirstResponder]; 

這工作。請記住恢復所選範圍。

拉斐爾

+0

這聽起來是正確的。謝謝! @wkw,對先前未對您的評論做出迴應表示歉意。不知何故沒有收到我的查詢回覆的電子郵件通知。感謝您的投入。 乾杯, Dev – 2010-07-14 14:29:14

2

我可以設置自動校正類型後運行[textField reloadInputViews]

請注意,這將重置鍵盤的狀態。如果您正在查看符號(而不是字母),撥打reloadInputViews後,鍵盤將重置爲字母。

+0

爲什麼這是低票?有用! – 2012-05-25 20:47:53

相關問題