を使用して宣言されたパスワードフィールドである UITextField があります
passwordField.secureTextEntry = YES;
私の問題は、パスワードの半分を入力して別のコンポーネントをクリックし、passwordField に戻ってもう一度入力を開始すると、iOS が既存のテキストをクリアすることです。
これが起こらないようにする方法、またはオフにする方法はありますか?
-ヘンリー
を使用して宣言されたパスワードフィールドである UITextField があります
passwordField.secureTextEntry = YES;
私の問題は、パスワードの半分を入力して別のコンポーネントをクリックし、passwordField に戻ってもう一度入力を開始すると、iOS が既存のテキストをクリアすることです。
これが起こらないようにする方法、またはオフにする方法はありますか?
-ヘンリー
これを行う最も簡単な方法は、次のようなコードで UITextField のデリゲートを実装することです。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementString {
if (textField.text) {
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:replacementString];
} else {
textField.text = replacementString;
}
return NO;
}
デフォルトでは、セキュリティで保護されたテキスト フィールドに対しては実行できません。ただし、回避することはできます。
デリゲート メソッドtextField:shouldChangeCharactersInRange:replacementString:
を実装し、渡された値を使用して何をすべきかを決定します。
つまり、範囲が文字列全体であり、置換が空の文字列である場合、変更を許可しないでください。新しいテキストは、新しく入力された文字として提供される場合があります。メソッドが実際に受け取るパラメーターを確認する必要があります。