我似乎遇到了这样一种情况,即调用BecomeFirstResponder()无法正常工作。
假设我在视图中有两个文本框。第一个文本框是ViewDidLoad();
的第一个响应者点击按钮,我希望第二个文本框成为第一响应者。
问题是如果我使用下面的行启动对话框,
var alertView = UIAlertController.Create("Title", "Message", UIAlertControllerStyle.Alert);
alertView.ModalPresentationStyle = UIModalPresentationStyle.OverCurrentContext;
var negativeAction = UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null);
alertView.AddAction(negativeAction);
//if (!string.IsNullOrWhiteSpace(""))
//{
// var positiveAction = UIAlertAction.Create("", UIAlertActionStyle.Default, null);
// alertView.AddAction(positiveAction);
//}
PresentViewController(alertView, true, delegate {
alertView.ResignFirstResponder();
});
然后调用tbSecond.BecomeFirstResponder();
第一个响应者无法更改。
如果我使用旧的UIAlert类启动对话框,如下所示,第一个响应者按预期工作。
var alertView = new UIAlertView("Title", "Message", null, "Cancel", null);
alertView.Show();
然后致电
tbSecond.BecomeFirstResponder();
如果我改变顺序,即调用tbSecond.BecomeFirstResponder();我无法改变调用的顺序。在我调用ShowDialog之前,它按预期工作。但由于种种原因,我无法改变这种秩序。
答案 0 :(得分:0)
您可以使用此
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
alertController.textFields?.last?.becomeFirstResponder()
}