2016-10-18 16 views
0

私は奇妙な問題に遭遇しています。私はビュー内にいくつかのテキストフィールドを持っていて、それらのアプリケーションに対してセキュアなテキストエントリが有効になっていると、アプリケーションを実行するとアプリケーションがフリーズします。安全なテキスト入力がテキストフィールドで有効になっている場合、アプリケーションがフリーズする

誰でもこの問題が発生しましたか、その修正を知っていますか?私は研究をしましたが、メモリリークの可能性があります。それ以外は私はこれに関する情報を見つけることができないようです。どんな助けでも大歓迎です!

私のテキストフィールドに作用するすべてのコード:

はUIを設定します:

self.passwordTextField.delegate = self 
passwordTextField.layer.borderWidth = 1 
passwordTextField.layer.cornerRadius = 5 
passwordTextField.layer.borderColor = UIColor.lightGray.cgColor 
passwordTextField.returnKeyType = .done 

追加オブザーバー:

usernameTextField.addTarget(self, action: #selector(self.textFieldDidChange), for: .editingChanged) 
passwordTextField.addTarget(self, action: #selector(self.textFieldDidChange), for: .editingChanged) 

オブザーバー機能:

func textFieldDidChange() { 
    if usernameTextField.text == "" || passwordTextField.text == "" { 
     loginButtonInactive() 
    } else { 
     loginButtonActive() 
    } 
} 

の変更ログインボタンの外観e:

func loginButtonActive() { 
    logInButton.isEnabled = true 
    logInButton.layer.borderWidth = 0 
    logInButton.backgroundColor = UIColor.blue.cgColor 
    logInButton.setTitleColor(UIColor.white, for: .normal) 
} 

func loginButtonInactive() { 
    logInButton.isEnabled = false 
    logInButton.layer.borderColor = UIColor.lightGray.cgColor 
    logInButton.layer.borderWidth = 1 
    logInButton.backgroundColor = UIColor.white 
    logInButton.setTitleColor(UIColor.lightGray, for: .normal) 
} 
+0

これは私にとってはわかりやすいですが、私はシミュレータに問題がありましたが、完全にフリーズしていませんでしたが、テキストフィールドのフォーカスを与えても非常に遅かったです。しかし、それは完璧にデバイス上で走った。どのようにデバイス対シミュレータは動作しませんか? – Sajjon

+0

動作はシミュレータとデバイスで同じです。完全なフリーズ。 – m1234

+0

いくつかのコードを投稿できますか? :) – Sajjon

答えて

0

私はこれを理解しました。これはこれで、この機能をしなければならなかった:

func textFieldDidChange() { 
    if usernameTextField.text == "" || passwordTextField.text == "" { 
     loginButtonInactive() 
    } else { 
     loginButtonActive() 
    } 
} 

私はこれにそれを変更:

func textFieldDidChange() { 
    if (usernameTextField.text?.characters.count == 0) || (passwordTextField.text?.characters.count == 0) { 
     loginButtonInactive() 
    } else { 
     loginButtonActive() 
    } 
} 

最初の関数は、それが以前のプロジェクトでうまく働いたとして、問題の原因となったが、新しいなぜ、私はわかりません機能がうまく動作し、問題が解決されました。

関連する問題