离开视图后无法输入UITextfield

时间:2012-12-08 08:26:15

标签: objective-c ios uitextfield

我的视图中有UIScrollViewUITextField控件。如果在输入任何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正在执行。

1 个答案:

答案 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];
}