前言
大家應該都知道,密碼框有個常見的需求:用一個按鈕切換密碼的明文/密文顯示。點一下顯示明文,再點一下顯示密文。
本來是個很簡單的需求,因為 UITextField 有secureTextEntry這個屬性可以用。
發現問題
但沒想到,簡單的一句代碼并不能解決問題:
- (IBAction)secureSwitchAction:(id)sender { self.passwordTextField.secureTextEntry = !self.passwordInputTextField.secureTextEntry;}
問題在于,在切換明文/密文的時候,如果切換前后的字符串寬度不一樣,字符串末尾到光標之間會出現一大段空白。
切換之后,光標前面有一段空白
官方文檔里也沒提這件事,估計又是官方實現的一個 bug 了。
解決方法
好在只需要簡單加幾句代碼:
- (IBAction)secureSwitchAction:(id)sender { self.passwordTextField.secureTextEntry = !self.passwordTextField.secureTextEntry; NSString* text = self.passwordTextField.text; self.passwordTextField.text = @" "; self.passwordTextField.text = text;}
就能解決問題了。
p.s. 我當時還查到了一篇文章 只用一行代碼[self.passwordInputTextField becomeFirstResponder];
就能解決這個問題,只是副作用是會讓輸入焦點切換到密碼框。如果不介意的話,用這個方法也可以。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。
新聞熱點
疑難解答