gpt4 book ai didi

iphone - UITapGestureRecognizer 和自动校正

转载 作者:行者123 更新时间:2023-12-03 20:08:23 27 4
gpt4 key购买 nike

我有以下代码:

- (void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
tap.cancelsTouchesInView = NO;
tap.delegate = self;
[tap release];
}

-(void)dismissKeyboard {
[self.textField resignFirstResponder];
}

文本字段有一个清除按钮,并且启用了自动更正。当我单击clearButton时,一切正常,并且在清除UITextField后键盘仍然出现。但是,当我不想接受建议的自动更正时,键盘就会消失,我的文本会被建议的文本替换。

我需要 UITapGestureRecognizer 因为我在 UITableView 中有 UITextField,所以当用户在 UITextField 外部单击时code>,我要放弃键盘。

我该如何解决这个问题,以便可以在用户需要且键盘仍处于事件状态时拒绝自动更正?为什么在使用clearButton时可以正常工作,但在拒绝自动更正时却无法正常工作?

编辑:它可以与clearButton一起正常工作,因为它位于UITextField内部。因此,该手势不会被触发。但是,当单击建议的文本更正时,它会被触发...有没有办法检查用户是否单击了建议的文本更正?

最佳答案

这是我实现的手势委托(delegate)方法,用于解决点击蓝色自动更正文本时的问题:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
BOOL handleTouch = NO;
UIView *v = [self.view hitTest:p withEvent:nil];
Class autocorrectionCancelClass = NSClassFromString(@"UIAutocorrectInlinePrompt");
if( ![v isKindOfClass:UIControl.class] && ![v isKindOfClass:autocorrectionCancelClass] && ![v isDescendantOfView:currentlyEditedTextView] )
{
handleTouch = YES;
}

return handleTouch;
}

点击自动更正取消按钮后,v 是私有(private) SDK 类 UIAuto CorrectInlinePrompt 的 View ,但它也是已编辑的 UITextField/ 的 subview UITtextView.

编辑:检查类更好,因为对于 UITextFieldUIAuto CorrectInlinePrompt View 不是该字段的后代(在 iOS 4.3 和 5.0 上测试)。问题是这个类可以重命名,因为它是私有(private)的。

关于iphone - UITapGestureRecognizer 和自动校正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com