Я пытался воспроизвести вашу проблему, но безуспешно. Сначала я подумал, что распознаватель жестов может мешать распознавателю жестов прокрутки scrollView, но это не так. Вот код, который у меня есть:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UILongPressGestureRecognizer *recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongHold:)];
// [scrollView addGestureRecognizer:recognizer];
UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 2000)];
lbl.text = @"lorem ipsum......";
lbl.numberOfLines = 0;
scrollView.contentSize = CGSizeMake(lbl.frame.size.width, lbl.frame.size.height);
[scrollView addSubview:lbl];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 150, 150);
[btn addGestureRecognizer:recognizer];
[scrollView addSubview:btn];
v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
v.backgroundColor = [UIColor yellowColor];
v.hidden = YES;
[scrollView addSubview:v];
}
- (void) handleLongHold:(UILongPressGestureRecognizer*) recognizer {
NSLog(@"long tap handled");
v.hidden = NO;
v.center = [recognizer locationInView:btn];
}
Кстати, я наткнулся на ваш вопрос, ища способ найти точку касания с помощью селектора распознавателя жестов - мне помог метод locationInView, и, надеюсь, этот код поможет вам.