我正在实现一个 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 个识别器", [手势计数]); }
在只是尝试的情况下,如果我在每次辞职后添加一个新的手势识别器,那么这是可行的,但显然不是一个好的解决方案。
有什么想法吗?