UITextField 不响应触摸或不会变为活动状态

UITextField not responding to touches or will not become active

我在故事板中添加了一个 UITextField:

@property (weak, nonatomic) IBOutlet UITextField *nameField;

一开始它工作正常,但有一些约束问题导致视图无法在 iPhone 5 上正确构建。所以我搞砸了一些约束以使其正确显示并且现在键盘永远不会出现 up/the UITextField 拒绝响应触摸或激活。

我尝试为 nameField 设置 UITapGestureRecognizer,但没有用。

我确保没有视图阻止它(在视图调试器上检查,然后在 viewDidAppear 中显式调用 [self.view bringSubviewToFront:self.nameField];

我也试过 [self.nameField setUserInteractionEnabled:YES]; 因为为什么不呢。

然后我转到故事板,单击文本字段并在右侧菜单的连接选项卡下查看 "Sent Events" 并将 Touch Up Inside 连接到 IBAction 方法:

- (IBAction)beginNameEdit:(id)sender {
    NSLog(@"Edit begin");
    BOOL accepted = [self.nameField becomeFirstResponder];
    if (accepted) {
        NSLog(@"accepted");
    }
}

没有任何反应,(编辑开始未打印)。 (我肯定也在边界内触及,但无论如何)

然后我将 Touch Down 连接到完全相同的 IBAction。

这一次,我开始让 'Edit begin' 打印,但是成为第一响应者的调用没有任何作用,尽管实际上已接受打印(这意味着根据 Apple 的说法,文本字段接受了第一响应者状态)

我似乎无法让我的 textField 处于活动状态,因此它永远停留在显示占位符文本上...这没有任何意义,尤其是因为如果使用某些自动布局约束可能会令我震惊任何一种效果。

有什么建议吗?

好的,在经典的 the-answer-is-the-last-thing-you'd-expect 时尚中:

我正在使用模拟器来测试应用程序。事实证明,当您使用模拟器时键盘并不总是出现,因为它 auto-detects 事实上您正在使用的计算机上有一个实际键盘。因此,模拟器上没有出现键盘,而是默默地成为第一响应者,等待我在计算机键盘上键入内容。

为什么键盘是早些时候出现而不是现在出现,我不知道。但我会留下这个以防其他人遇到这个问题。