不知道你真正想要從BecomeFirstResponder
做什麼,而是沒有創造UITextField
自定義子類,您可以創建自定義UITextFieldDelegate
,並將其分配給UITextField.Delegate
財產。
如果你想防止成爲第一個響應的現場,你可以使用UITextFieldDelegate.ShouldBeginEditing
返回false
,BecomeFirstResponder
調用之前調用此方法)和UITextFieldDelegate.EditingStarted
被BecomeFirstResponder
後稱爲被稱爲:
public class TextFieldDelegate : UITextFieldDelegate
{
public override bool ShouldBeginEditing(UITextField textField)
{
return base.ShouldBeginEditing(textField);
}
public override void EditingStarted(UITextField textField)
{
base.EditingStarted(textField);
}
}
請參考以下鏈接查看的UITextFieldDelegate
的所有方法調用的完整的訂單/流程:
編號:https://developer.apple.com/reference/uikit/uitextfielddelegate
更新:
這裏是我做編輯SecureTextEntry
切換/沒有明確的領域:
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();
3)手柄觸摸切換和/或物理鍵盤字段Tabbing:
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' ...,結帳我的更新 – SushiHangover
我似乎在嘗試連接自定義委託時出現以下錯誤渲染器OnElementChanged'' Control.Delegate = new SecureTextFieldDelegate();'。 'System.InvalidOperationException:事件註冊覆蓋現有的委託。無論是使用事件還是您自己的委託:ExtendedEntryRenderer + SecureTextFieldDelegate UIKit.UITextField + _UITextFieldDelegate'。我是否需要首先取消註冊某個默認代理或某個東西? – kspearrin