19

在装有 iOS 6 GM 的 iPad 上。我有 6 个 UITextFields、3 个 UITextViews 和一个触发弹出框/操作表的 UIButton。

当我选择其中一个 UITextFields 或 UITextViews 时,键盘会弹出并出现光标,但我无法输入文本。如果我按下 UIButton 以显示弹出框,然后在其外部点击以将其关闭并返回 UITextFields 或 UITextViews,它们就会起作用。

我有 UITextxxxx.delegate = self; 为所有人设置。在我的 .h 文件中的 xib、UITextFieldDelegate 和 UITextViewDelegate 中选中了“已启用”和“已启用用户交互”以及:

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}


- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    
    return YES;
    
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    
    return YES;
    
}

- (IBAction)textFieldReturn:(id)sender {
    
    [sender resignFirstResponder];
}



- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
    
    if (textView == notestextView){
        [notestextView becomeFirstResponder];
    }
    if (textView == notestextViewTwo){
        [notestextViewTwo becomeFirstResponder];
    }
    if (textView == notestextViewThree){
        [notestextViewThree becomeFirstResponder];
    }
    
    return YES;
    
}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    
    return YES;
    
}

我什至尝试 [xxxxxxx becomeFirstResponder]; 在 viewDidLoad 中。这会在运行时弹出键盘并将光标放在字段中,但我仍然无法输入它,直到我点击 UIButton 以显示弹出框。

任何人都知道为什么我不能在字段中输入以及为什么调用弹出框“修复它”?

更新 9/18:我在我的应用程序中推送了一个新视图,该视图只有一个带有文本字段和文本视图的视图。代表已全部成立。相同的行为。键盘和光标出现,但没有打字。这排除了 popovercontroller 搞砸的事情。

我强烈开始认为这是一个 iOS 6 错误。这与我在 iOS 4 和 5 上我的应用程序的 iPhone 版本中的视图几乎相同,而且我从来没有遇到过问题。iPhone 和 iPad 版本之间的唯一区别是图像选择器的呈现方式。您必须为 iPad 使用弹出框。这就是为什么我认为 popover 代表与它有关。

在 iOS 6 中实现 UITextFields 和 UITextViews 之间有什么我不知道的根本区别吗?似乎不太可能。

如果它有助于我的应用程序像这样流动:

带有 10 个按钮的主视图

  • 每个按钮通过导航控制器推送一个表格视图
  • tableviews 推送详细视图 - textfields 和 textviews 表现出上述行为
  • tableview 也有一个添加按钮,用于推动模态视图以添加新项目 - 文本字段和文本视图表现出上述行为
4

7 回答 7

38

这最初是基于 iOS 5 构建的 iPhone 应用程序。为了使其成为 iPad 应用程序,我只是复制了该项目并将所有版本升级.xibs到 iPad 版本。我不知道这是否是一个错误,或者它是否与升级到 iOS 6 有关,但这样做会使MainWindow.xib.

在 MainWindow xib 中,我输入"MainViewController"了标题(以前是空白的。)

在此处输入图像描述

并勾选了"Visible at Launch"。即使它在发射时已经可见,但没有检查它会搞砸一些事情。

在此处输入图像描述

现在我所有的文本视图和文本字段都可以工作了。

于 2012-09-20T00:16:19.950 回答
13

我遇到了同样的问题,请确保应用程序委托具有[self.window makeKeyAndVisible]. 这为我解决了它。

于 2012-09-19T14:41:46.880 回答
2

对我来说,你的解决方案不起作用,所以我找到了另一个。

我正在使用 Revmob 广告,因此在启动应用程序时会加载全屏视图和横幅视图。Revmob 使用一些人员在我认为这是问题的所有视图控制器中显示相同的横幅。当我禁用 revmob 时,我可以将文本添加到我的文本字段。

于 2012-09-24T04:57:55.340 回答
2

这显然是 iOS 6 中的错误。只需放入[searchBar becomeFirstResponder];方法searchBarTextDidBeginEditing

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    if (!self.window.isKeyWindow) {
        [self.window makeKeyAndVisible];
    }
}

这个解决方案对我有用。

于 2013-01-04T10:08:21.860 回答
0

为了澄清其他答案,您不能在未设置为关键窗口的窗口中输入文本。大多数应用程序只使用一个窗口,或者在其他窗口上没有文本输入,所以永远不会遇到这个问题。

处理多个窗口时,请确保在切换焦点时按resignKeyWindow+ makeKeyWindow,非常重要的是,事后恢复关键窗口!

于 2014-10-23T01:33:35.297 回答
0

这些解决方案对我不起作用,但是在我删除了 中的派生数据文件夹后~/Library/Developer/Xcode/DerivedData/AppName,它就起作用了。

于 2013-08-22T10:44:26.870 回答
0

尝试成为FirstResponderdispatch_async(dispatch_get_main_queue(),^{});

于 2016-07-13T03:11:30.377 回答