我有ConfigureViewController
包含一些UIButtons和UITextField * MyTextField
。每按一下按鈕,就會彈出一個使用presentViewController:animated:completion:
的對話式視圖控制器。但是,如果在編輯文本字段時點擊其中一個按鈕,當關閉對話框並返回到原始屏幕時,我無法將焦點返回或鍵入文本字段。如果presentViewController編輯時無法輸入UITextField
這是點擊按鈕時調用的方法。
-(void)AdvancedInfoButtonPressed :(id)sender
{
AdvancedInfoPopViewController *myAdvancedInfoViewController = [[AdvancedInfoPopViewController alloc] init];
[myAdvancedInfoViewController setDelegateAndDevice :self :Current_Device];
myAdvancedInfoViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController :myAdvancedInfoViewController animated :NO completion :nil];
}
沒有明確地MyTextField
移除焦點,呈現AdvancedInfoViewController
不會自動取消鍵盤。
我懷疑問題是MyTextField
仍然認爲它有焦點(即使鍵盤和閃爍的光標已經消失),所以不能讓自己再次成爲第一響應者。沿着這些路線,我發現如果在呈現對話框視圖控制器之前添加[MyTextField resignFirstResponder]
,問題就會消失。
但是,這似乎並不是一個很好的解決方案,因爲它意味着必須記住在幾個地方作爲第一響應者(導致難以維護的代碼)辭職該文本字段(或任何其他文本字段)。我的問題是:當ConfigureViewController
將被AdvancedInfoViewController
(或AdvancedInfoViewController
被解僱並且重點返回到ConfigureViewController
)部分模糊時,是否有任何事件可以掛鉤到其中,其中我可以添加一些邏輯來清理MyTextField
的firstResponder狀態?
我試過viewWillDisappear
和viewWillAppear
但他們從來沒有在ConfigureViewController
上被調用過。
我也嘗試添加textFieldDidEndEnding到文本字段的委託,但儘管它被稱爲它沒有解決問題。
-(void)textFieldDidEndEditing:(UITextField *)textField
{
[MyTextField resignFirstResponder];
}