我在iOS 8上構建應用程序。我有一個登錄屏幕,用戶輸入用戶名和密碼。當他們輸入了一個有效的用戶名和密碼時,他們被允許移動到下一個屏幕(一個按鈕被啓用,允許他們前進)。UITextField secureEntry不尊重clearsOnBeginEditing屬性
我有邏輯寫,告訴時啓用或禁用自身的按鈕,這是基於關閉UITextFieldDelegate
方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
這個方法告訴我,當我的文本字段要改變自己文字 - 很簡單。我已將密碼文本字段的secureTextEntry
屬性設置爲YES,並將其clearsOnBeginEditing
屬性設置爲NO。
當我離開密碼文本框然後回到它(通過單擊它內部)並鍵入內容時,文本仍然被擦除。使事情變得更加複雜,shouldChangeCharactersInRange:replacementString:
方法不會給我任何指示文本字段被清除(基於範圍或替換字符串)。因此,我無法檢測何時將繼續按鈕設置爲禁用。
有什麼想法?謝謝!
感謝您的回答。然而,這對我不起作用。即使在實現了textFieldShouldClear之後,該方法在字段清除時也不會被調用。 – 2015-02-10 21:26:29
從apple文檔(關於textFieldShouldClear):「文本字段響應用戶按下內置清除按鈕來調用此方法(該按鈕默認不顯示,但可通過更改clearButtonMode屬性中的值來啓用)「由於我沒有使用清除按鈕,所以爲什麼不調用這個委託方法是有意義的。 – 2015-02-10 21:31:58
我會說,閱讀該鏈接中的答案會稍微清除一些情況。基本上,從用戶體驗的角度來看,安全的輸入文本字段總是會在編輯時清除,因爲用戶幾乎不可能知道該字段以前是什麼東西,因爲它無論如何都變成了黑色圓圈。既然如此,我想我們需要嘗試一些不同的東西來阻止文本字段的清除。因此,爲什麼我認爲我的解決方案是體面的。 – 2015-02-11 21:53:37