【问题标题】:UIGestureRecognizer and UITextViewUIGestureRecognizer 和 UITextView
【发布时间】:2012-04-30 07:13:16
【问题描述】:

我正在实现一个 UITextView,我只想响应文本视图指定部分中的触摸。

我有一个手势识别器附加到视图,并且工作正常,直到我将视图设置为第一响应者,如果视图中的点击点大于 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];
}

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

- (IBAction)viewTapped:(UIGestureRecognizer *)sender { [self.view endEditing:YES]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textViewTapped:)]; [self.myTextView addGestureRecognizer:tap]; NSArray *gestures = [self.myTextViewgestureRecognizers]; NSLog(@"得到 %d 个识别器", [手势计数]); }

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

有什么想法吗?

【问题讨论】:

    标签: ios uitextview uigesturerecognizer


    【解决方案1】:

    我也有同样的问题,我通过实现 dummy 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;  }
    

    这对我有用

    【讨论】:

    • - gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 就够了
    【解决方案2】:

    iOS 10 Swift 3.0

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {    
      return true
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2011-06-04
      • 2012-05-19
      • 2011-05-02
      • 2015-04-25
      • 1970-01-01
      相关资源
      最近更新 更多