我想知道是否有办法让UITextField清除按钮'始终可见'
textfield.clearButtonMode = UITextFieldViewModeAlways;
似乎不起作用 ..如果可以使用按钮关闭键盘?
提前致谢。
答案 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;
答案 4 :(得分:0)
我发现这种奇怪的行为是由一个竞争的手势识别器引起的,该手势识别器在调用textFieldShouldClear:之前键盘前的第一个响应者。它似乎正在破坏第一响应者。
如果您已通过此方式进行设置,请确保手势识别器上的cancelsTouchesInView设置为YES。这样你就不需要在textFieldShouldClear:或textFieldShouldBeginEditing:委托方法中做任何特殊的事情。