UITextField没有响应触摸或不会激活

时间:2016-01-11 23:49:58

标签: ios objective-c uitextfield uistoryboard iboutlet

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

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

它起初工作正常,但有一些约束问题导致视图无法在iPhone 5上正确构建。所以我搞砸了一些限制,以使其正确显示,现在键盘永远不会出现/ UITextField拒绝响应触摸或变为活动状态。

我尝试将UITapGestureRecognizer设置为nameField,但无效。

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

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

然后我进入故事板,点击文本字段,在右侧菜单的连接选项卡下,我查看了“已发送事件”,并将Touch Up Inside连接到IBAction方法:

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

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

然后我将Touch Down连接到同样的IBAction。

这一次,我开始接受“编辑开始”打印但是成为第一响应者的呼叫尽管已经接受了实际打印(这意味着根据Apple,文本字段接受了第一响应者状态)

我似乎无法使我的textField处于活动状态,因此它永远停留在显示占位符文本......这没有任何意义,特别是因为如果玩一些自动布局约束我会感到震惊可能有任何排序效果。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

好的,在经典 the-answer-is-the-thing-desired-desired-expect 时尚中:

我正在使用模拟器测试应用程序。当您使用模拟器时,键盘并不总是出现,因为它会自动检测您正在使用的计算机上有一个ACTUAL键盘。因此,在模拟器上没有出现键盘,它无声地成为第一个响应者并等着我在计算机键盘上输入内容。

为什么键盘出现的时间早了而不是现在,我不知道。但是如果有其他人遇到这个问题我会留下这个。