ios - UIGestureRecognizer 和 UITextView

标签 ios uitextview uigesturerecognizer

我正在努力实现一个 UITextView,我只想在其中响应 TextView 指定部分中的触摸。

我在 View 上附加了一个手势识别器,它工作正常,直到我将 View 设置为第一响应者,如果 View 中的点击点大于 X 和 Y 值,我就会这样做。

- (IBAction)textViewTapped:(UIGestureRecognizer *)sender {
CGPoint point = [sender locationOfTouch:0 inView:self.view];

NSLog(@"x ix %f, y is %f", point.x, point.y);

if (point.x > 96 && point.y > 106)
    [self.myTextView becomeFirstResponder];
}

问题是,一旦它被设置为第一响应者,然后通过在该 TextView 之外点击而辞职,我的手势识别器方法就再也不会被调用了。如果我点击未设置第一响应者的区域,那么我的方法会在我点击时被调用多次。如果我设置然后退出第一响应者,它在第一次退出后不会响应。

- (IBAction)viewTapped:(UIGestureRecognizer *)sender {
    [self.view endEditing:YES];

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textViewTapped:)];
    [self.myTextView addGestureRecognizer:tap];
    NSArray *gestures = [self.myTextView gestureRecognizers];
    NSLog(@"got %d recognizers", [gestures count]);  
}

在刚刚的尝试中,如果我在每次辞职后添加一个新的手势识别器,那是可行的,但显然不是一个好的解决方案。

有什么想法吗?

最佳答案

我有同样的问题,我通过实现虚拟 UIGestureRecognizerDelegate

解决了它

将此添加到您的代码中

myGestuerRecognizer.delegate = self

然后实现 UIGestureRecognizerDelegate

#pragma mark - UIGestureRecognizerDelegate

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
    return YES;  }

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer
*)otherGestureRecognizer{
    return YES;  }

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    return YES;  }

这对我有用

关于ios - UIGestureRecognizer 和 UITextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216782/

相关文章:

ios - 错误域=com.alamofire.error.serialization.response 代码=-1011“请求失败 : bad request (400)

ios - FMDB SQL 查询不返回任何数据

ios - 什么更有效,覆盖 drawRect 或使用 viewWillAppear

iphone - 每日 UILocaleNotification 的问题

ios - 如何以编程方式更改 UIButton 标签

ios - 如何在ios的uipageviewcontroller单击时禁用页面 curl

iphone - 在 iPad 应用程序的 UIScrollview 中用两根手指滑动

iphone - 使用 UILongPressGestureRecognizer 和 UIBarButtonItem

ios - 使 TextView 响应用户键入的文本

swift - 如果 UITextView.contentSize.height 在 Swift 中不可编辑或滚动启用,为什么它不起作用?