UITextField没有辞职第一响应者?

时间:2011-12-12 19:38:30

标签: ios cocoa-touch uitextfielddelegate

我将视图控制器作为模态呈现。该视图控制器有几个通过IB连接的UITextField。

我的问题是,当按下返回键时,会调用委托方法,但由于某种原因,在给定的textField上调用resignFirstResponder不是。即使我在textFieldShouldReturn委托方法中向控制台打印一条消息,它也会被打印出来,但它只会拒绝调用resign方法。

在shouldReturn委托方法中,我只有:

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return  YES;
}

这在我之前从未发生过,它只是简单地不会resignFirstResponder。正如我之前提到的,我可以将一个打印件放到控制台上,只是为了验证是否会调用shouldReturn方法。

我也尝试过这只是为了查看是否已设置委托,并确实更改了UITextField行为。

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    [textField setTextAlignment:UITextAlignmentCenter];
}

这个问题真让我感到困惑。即使我试图直接在文本字段上调用resignFirstResponder,它也不会解雇键盘。

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    if ([textField isEqual:self.productTextField]) {
        NSLog(@"Product textfield");
        [self.productTextField resignFirstResponder];
    } else if ([textField isEqual:self.quantityTextField]) {
        NSLog(@"Quantity textfield");
    }
    return YES;
}

两个日志都使用各自的文本字段并分别打印相应的消息。但是直接在文本字段中发送消息时调用该方法仍然无效。

找到答案,显然,UIPresentationFormSheet不允许你摆脱键盘。我尝试了不同的演示风格,它的工作原理。 @Cal,谢谢您的question

1 个答案:

答案 0 :(得分:4)

我认为你需要在textFieldShouldReturn方法中明确写出[textField resignFirstResponder];

如果你已经这样做了,也许这绝对是奇怪的。你能发布你的代码吗? :)