あなたが実際に
BecomeFirstResponder
以内に何をしたいのかわからない
が、UITextField
のカスタムサブクラスを作成することなく、カスタムUITextFieldDelegate
を作成することができ、それがUITextField.Delegate
プロパティに割り当てます。
あなたがファーストレスポンダになってからフィールドを防ぐためにしようとしている場合、あなたは)BecomeFirstResponder
が呼び出される前にこのメソッドが呼び出され、false
を返すようにUITextFieldDelegate.ShouldBeginEditing
を使用することができますし、BecomeFirstResponder
が呼び出された後UITextFieldDelegate.EditingStarted
が呼び出されます。
public class TextFieldDelegate : UITextFieldDelegate
{
public override bool ShouldBeginEditing(UITextField textField)
{
return base.ShouldBeginEditing(textField);
}
public override void EditingStarted(UITextField textField)
{
base.EditingStarted(textField);
}
}
参考:https://developer.apple.com/reference/uikit/uitextfielddelegate
はUITextFieldDelegate
のすべてのメソッド呼び出しのフルオーダー/フローを確認するには次のリンクを参照してください。
更新:
1)カスタムUITextFieldDelegate
:
public class SecureTextFieldDelegate : UITextFieldDelegate
{
public override void EditingStarted(UITextField textField)
{
if (textField.SecureTextEntry != true)
{
var text = textField.Text;
textField.DeleteBackward();
textField.InsertText(text);
}
}
}
2)セットアップあなたのUITextField:
uiTextField.Delegate = new SecureTextFieldDelegate();
ここ
は、私が編集にSecureTextEntry
トグル/明確なフィールドを行わない方法です
3)ハンドルトグルまたは物理キーボードのフィールドのタッチタブ:
uiSwitch.ValueChanged += (object sender, EventArgs e) =>
{
uiTextField.SecureTextEntry = !uiTextField.SecureTextEntry;
if (uiTextField.SecureTextEntry == true)
{
var text = uiTextField.Text;
uiTextField.DeleteBackward();
uiTextField.InsertText(text);
}
};
UITextField.Text
今、ユーザーが実行しない限り、決して明確な私はフォーカスが再開されるパスワードフィールドを上書きするUITextFieldを阻止しようとしています
削除し、ユーザーはパスワードの可視性のために(再編集を開始すべきですトグルボタン)。これはObj-Cソリューションです:http://stackoverflow.com/a/37061759/1090359。あなたが投稿したデリゲートソリューションを見て、私が思いつくことができるものを見てみましょう。 – kspearrin
@kspearrinああ...カスタムデリゲートは、サブクラス化された 'UITextField'を使って作業していない限り行く方法です...、checkout私の更新 – SushiHangover
カスタムでデリゲートを結びつけようとすると次のエラーが発生しているようですレンダラー 'OnElementChanged'' Control.Delegate = new SecureTextFieldDelegate(); '。 'System.InvalidOperationException:イベント登録が既存のデリゲートを上書きしています。単に、イベントや独自のデリゲートを使用してください:ExtendedEntryRenderer + SecureTextFieldDelegate UIKit.UITextField + _UITextFieldDelegate'。既定のデリゲートなどを最初に登録解除する必要がありますか? – kspearrin