0

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

我的问题是当点击返回键时,委托方法被调用,但由于某种原因,在给定的 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,谢谢你的问题

4

1 回答 1

4

我认为您需要[textField resignFirstResponder];在 textFieldShouldReturn 方法中明确编写。

如果你已经这样做了,也许这肯定很奇怪。你可以发布你的代码吗?:)

于 2011-12-12T19:46:22.157 回答