我的视图中有UIScrollView
个UITextField
控件。如果在输入任何UItextField
控件后,我点击其他位置,然后导航到另一个视图,一旦我返回到同一视图,我就无法再输入UITextField
。
我也为视图中的每个UITextField
控件提供了此代码。
//self.QuestionAnswer = UITextField - This is the control with the issues.
[self.QuestionAnswer addTarget:self action:@selector(SaveQuestionAnswer:) forControlEvents:UIControlEventEditingDidEndOnExit];
[self.QuestionAnswer addTarget:self action:@selector(SaveQuestionAnswer:) forControlEvents:UIControlEventEditingDidEnd];
//sender = self.QuestionAnswer - This control is of type UITextField.
-(IBAction)SaveQuestionAnswer:(id)sender
//some code here
[control resignFirstResponder];
//some code here
}
我还确认,当[control resignFirstResponder]
失去焦点时UITextField
正在执行。
答案 0 :(得分:0)
我已经解决了我的问题。我的所有控制器都从一个基本控制器继承。在这个基本控制器中,我有处理我的应用程序的所有导航的方法。
将这两个方法添加到我的基类中。如果您没有基类,可以添加此控制器。这将循环浏览视图上的所有控件并释放第一响应者。
-(void)StartReleaseAllFirstResponders
{
for(UIView *Item in [self.view subviews]) {
[self ReleaseAllFirstResponders:Item];
}
}
-(void)ReleaseAllFirstResponders:(UIView*)OriginItem
{
for(UIView *Item in [OriginItem subviews]) {
[Item resignFirstResponder];
}
[OriginItem resignFirstResponder];
}
这是实施的一个例子。
-(void)Navigate_Home
{
[self StartReleaseAllFirstResponders]; //Making sure we release all first responders
HomeController *GoToView= [self.storyboard instantiateViewControllerWithIdentifier:@"HomeController"];
GoToView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:GoToView animated:YES completion:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}