當我使用的UIViewController
我能捕獲返回鍵的鍵盤事件與ShouldReturn
一個UITextField
:返回鍵不爲UITextField上UIAlertView中工作.. SIGSEGV
public override void ViewDidLoad()
{
this.txtPassword.ShouldReturn = (tf) =>
{
tf.ResignFirstResponder();
return true;
};
}
.. 。但是當我使用的UIAlertView
我嘗試使用ShouldReturn
當SIGSEGV錯誤:
public override void ViewDidLoad()
{
base.ViewDidLoad();
loginScreen = new UIAlertView();
loginScreen.Title = "Login";
loginScreen.AlertViewStyle = UIAlertViewStyle.LoginAndPasswordInput;//type login and pass
loginScreen.AddButton ("Cancel");
//username
UITextField usernameField = loginScreen.GetTextField(0);
usernameField.KeyboardType = UIKeyboardType.Default;
usernameField.ReturnKeyType = UIReturnKeyType.Next;
usernameField.ClearButtonMode = UITextFieldViewMode.WhileEditing;
//password
UITextField passwordField = loginScreen.GetTextField(1);
passwordField.KeyboardType = UIKeyboardType.Default;
passwordField.ReturnKeyType = UIReturnKeyType.Next;
passwordField.ClearButtonMode = UITextFieldViewMode.WhileEditing;
//(Error SIGSEV happens here!!! and the resignfirstresponder doesn't work)
passwordField.ShouldReturn = (tf) =>
{
tf.ResignFirstResponder();
return true;
} ;
loginScreen.Show();
我不知道究竟是什麼發生的事情,這可能是一個bug或我做錯了什麼?
GC收集(託管)實例(例如passwordField)時可能會發生這種情況現在,您提供的代碼看起來是正確的 - 但也許(稍後)允許「loginScreen」被丟棄(這將允許文本字段也被丟棄)。你能提供一個完整的測試案例嗎?您可以附加到http://bugzilla.xamarin.com上的錯誤報告謝謝! – poupou
我在MT 5.2.11上使用完全相同的代碼,只有一點區別:我的ShouldReturn看起來像這樣:pwd.ShouldReturn = delegate {passwordField.ResignFirstResponder();返回true; } - 所以我捕獲我想要辭職的文本字段,這似乎阻止收集。 – Krumelur