我在 UIScrollView 中有一个文本字段,我想在用户开始编辑时显示一个清除按钮。当用户点击 UIScrollview 的背景(但不是文本字段)时,我还需要隐藏键盘。显示那个清除按钮不是问题,问题是当点击清除按钮时键盘被隐藏并且文本字段没有被清除。显然,问题出在手势识别器上,因为处理此问题的方法会在单击清除按钮时触发(但在点击文本字段时不会触发)。这是我的代码:
//adding gesture recognizer so i can hide keyboard when user taps scrollview
- (void) textFieldDidBeginEditing:(UITextField *)textField
{
if (self.tapOutside == nil) self.tapOutside = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textFieldTouchOutSide:)];
[self.scrollView addGestureRecognizer:self.tapOutside];
}
//This hides keyboard BUT IS ALSO CALLED WHEN CLEAR BUTTON IS TAPPED
- (void)textFieldTouchOutSide:(id)sender
{
[self.textfield resignFirstResponder];
}
//NEVER GETS CALLED
- (BOOL) textFieldShouldClear:(UITextField *)textField {
return YES;
}
任何想法如何解决这个问题?也许添加手势识别器的更好方法?我想不出没有优雅的解决方案......提前非常感谢......