在iOS7中的UITextFields之间点击

在iOS7中的UITextFields之间点击,ios,iphone,objective-c,cocoa-touch,uitextfield,Ios,Iphone,Objective C,Cocoa Touch,Uitextfield,当选择UITextField并显示键盘时,如果点击视图的其他部分,键盘将消失 如果我点击另一个UITextField,键盘将保持不动,第一个文本字段将被取消选择,并且不会发生任何事情。然后我需要再次点击另一个UITextFIeld,以进行选择并显示键盘 当选择第一个UITextField时,有没有办法使第二个UITextField立即可访问?首先,我认为键盘在点击另一个UITextField或UITextView时没有被关闭并再次打开是一个错误。它应该被报告,苹果应该修复它 使用textfiel

当选择
UITextField
并显示键盘时,如果点击视图的其他部分,键盘将消失

如果我点击另一个
UITextField
,键盘将保持不动,第一个文本字段将被取消选择,并且不会发生任何事情。然后我需要再次点击另一个
UITextFIeld
,以进行选择并显示键盘


当选择第一个
UITextField
时,有没有办法使第二个UITextField立即可访问?

首先,我认为键盘在点击另一个UITextField或UITextView时没有被关闭并再次打开是一个错误。它应该被报告,苹果应该修复它

使用textfield委托方法并注册键盘通知,如果用户点击另一个textfield并且键盘没有关闭和重新打开,则应该可以手动跟踪。至少您应该能够检测到何时发生这种情况,并通过[textField resignFirstResponder]手动关闭键盘

键盘通知如下所示:

UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillHideNotification
UIKeyboardDidHideNotification
我很确定你知道UITextfield和textview委托方法

 – textFieldShouldBeginEditing: 
 – textFieldDidBeginEditing:
 – textFieldShouldEndEditing:
 – textFieldDidEndEditing:
我目前不在一个活动项目中,所以我不确定是否忽略了这个问题,但我记不起发生在我身上的事情。

  • 你可以用。只要看演示并决定 使用与否

  • 或者您可以在每个文本字段中按顺序设置标记
    在我看来。然后使用下面的代码

    -(BOOL)textFieldShouldReturn:(UITextField*)textField
    
    {
         NSInteger nextTag = textField.tag + 1;
    
         UIResponder* nextResponder = [textField.superview viewWithTag:nextTag];
    
         if (nextResponder) {
    
        [nextResponder becomeFirstResponder];
    
        } else {
    
        [textField resignFirstResponder];
     }
    return NO; 
    }
    

如果在
textfielddidediting
中重新加载tableview,将以这种方式中断选择。不要这样做。

试试看,按另一个视图应该调用下面的fn

-(void)disappearKey{
[self.view endEditing:YES];
}

键盘消失后,轻触任意文本字段,将出现键盘

请显示您用于关闭键盘的代码。您可以使用“下一步”按钮作为返回按钮,并在代理中,当点击该按钮时,使第二个UITextField成为第一响应者。Stefan-这不是正常行为(您应该能够通过创建一个包含两个文本字段的基本单视图应用程序来验证这一点)。代码中的某些内容导致了这种行为。我没有任何代码可以关闭键盘。我使用的是TPKeyboardAvoidingTableview(cocoapod),这是我认为唯一可能影响这一点的东西。我将尝试在这里创建一个最小的失败,并跟踪它。它不一定是下一个文本字段。我在屏幕上有8个,任何一个都是有效的目标,需要点击。今晚我会试试这个。我相当肯定,当第二个文本字段被点击时,“DidEndEditing”不会触发,但键盘上有我的附件完成按钮。