iPhone:可以用UITextField清除按钮关闭键盘吗?

时间:2010-08-05 21:00:42

标签: iphone uitextfield

我想知道是否有办法让UITextField清除按钮'始终可见'

textfield.clearButtonMode = UITextFieldViewModeAlways;

似乎不起作用 ..如果可以使用按钮关闭键盘?

提前致谢。

5 个答案:

答案 0 :(得分:37)

如前所述,在您清除该字段后,Apple似乎正在设置文本域焦点。

解决方案非常简单。只需自己清除字段,resignFirstResponder并返回NO

    -(BOOL)textFieldShouldClear:(UITextField *)textField
    {
        textField.text = @"";
        [textField resignFirstResponder];

        return NO;
    }

答案 1 :(得分:9)

在你的代表中,功能

- (BOOL)textFieldShouldClear:(UITextField *)textField
当用户想要清除文本字段时调用

。如果您返回YES并致电

[textField resignFirstResponder];

键盘应该消失。我不知道clearButtonMode,除了你可能想要提前设置它,最好是在将视图添加到其superview之前。

编辑为了确保您真正辞职了,请稍等一下:

[textField performSelector:@selector(resignFirstResponder) withObject:nil afterDelay:0.1];

答案 2 :(得分:5)

延迟对我来说效果不佳。相反,我向委托添加了一个实例变量:

BOOL cancelEdit;

然后在委托实现中:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if (cancelEdit) {
        cancelEdit = NO;

        return NO;
    } else {
        return YES;
    }
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    cancelEdit = YES;

    return YES;
}

答案 3 :(得分:0)

UITextFieldDelegate textFieldShouldClear

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

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/occ/intfm/UITextFieldDelegate/textFieldShouldClear

答案 4 :(得分:0)

我发现这种奇怪的行为是由一个竞争的手势识别器引起的,该手势识别器在调用textFieldShouldClear:之前键盘前的第一个响应者。它似乎正在破坏第一响应者。

如果您已通过此方式进行设置,请确保手势识别器上的cancelsTouchesInView设置为YES。这样你就不需要在textFieldShouldClear:或textFieldShouldBeginEditing:委托方法中做任何特殊的事情。