2013-11-30 2 views
0

У меня проблема. Надеюсь, кто-то может мне помочь.Панорамный жест над верхом жесты Tap в моем обычном виде

У меня есть представление, которое имеет жест панорамы, который отлично работает, и я могу панорамировать изображение, которое я отобразил. Это единственный жест, который добавлен.

Я затем добавить UIView (пользовательский вид называется headerView) с кнопками на нем, что я добавляю программно ..

  • Он отображает кнопки правильно
  • Я поставил его делегат себя
  • Я подтвердил, что селектора кнопок установлены
  • Я использовал headerView раньше в другой форме, и кнопки работают нормально.
  • Я привел мою headerView к «фронту»

Проблемы я встречая что в этой форме с панорамированием жеста, кнопки на моем headerView не реагировать на касания. Если я нажимаю прямо на свой заголовок, я могу передвигаться по основному изображению, поэтому жест панорамы, похоже, переместится на жесты касания на моем заголовочном файле, что предотвращает работу каких-либо из моих кнопок заголовка.

Как исправить это, чтобы жест панорамирования не мешал постукивать в моем заголовке?

Спасибо!

SOMEWHAT SOLVED ... Чтобы обновить эту запись. Я был в состоянии получить ответ вручную установив headerView с отводом жест ...

self.headerView = [[OAPhotoHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.window.bounds.size.width, 100.0f) buttons:OAPhotoHeaderButtonsComment| OAPhotoHeaderButtonsLike |OAPhotoHeaderButtonsFlag];//was 44.0f 
self.headerView.delegate = self; 
[self.headerView setUserInteractionEnabled:YES]; 
self.headerView.backgroundColor = [UIColor grayColor]; 
self.headerView.photo=user; 
[self.headerView setPhoto:self.userPhotoObject];// self.myUserPhotoObject]; 
[self.headerView.likeButton setUserInteractionEnabled:YES]; 
//[self.headerView.likeButton addTarget:self action:@selector(didTapLikePhotoButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
[self.headerView setUserInteractionEnabled:YES]; 
[self.headerView setOpaque:YES]; 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self.headerView action:@selector(didTapLikePhotoButtonAction:)]; 
[tap setNumberOfTouchesRequired:1]; 
[tap setNumberOfTapsRequired:1]; 
[self.headerView addGestureRecognizer:tap]; 
[self setExclusiveTouchForButtons:self.headerView]; 

Это фактически запускает обработчик кнопки в классе headerView, как будто кто-то нажал на кнопку. Однако это не сработает, поскольку они могут нажимать в любом месте headerView, и он срабатывает. Кажется, я не могу найти подходящий способ назначить жест отвода на кнопку

[self.headerView.likeButton addGestureRecognizer:tap] 

не работает. Кроме того, это не работает, либо ...

[self.headerView.likeButton addTarget:self action:@selector(didTapLikePhotoButtonAction:) forControlEvents:UIControlEventTouchUpInside]; 
+0

Я смог отключить жест панорамы над моим заголовком. Использование - (BOOL) gestureRecognizer: (UIGestureRecognizer *) gestureRecognizer shouldReceiveTouch: (UITouch *) touch {...} однако кнопки до сих пор не регистрируют ответвление , – user2013871

+0

Попробуйте установить exclusiveTouch на свои кнопки. Я не уверен в этой помощи, но стоит попробовать.Это от Apple doc: xclusiveTouch только предотвращает попадание в другие виды во время активного касания в эксклюзивном сенсорном виде. – Greg

+0

Спасибо за ваше предложение Грег! Я установил кнопки в exclusiveTouch, но они все равно не работают :( – user2013871

ответ

0

Вы должны добавить еще один жест признать методы, которые позволяют отменить его, если вы нажмете на кнопке:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    // Replace to your view with button 
    if ((self.headerView isDescendantOfView:touch.view)) 
    { 
     return NO; 
    } 
    return YES; 
} 

Remember, чтобы добавить Ваше мнение контроллер в качестве делегата распознавателя жестов. Надеюсь, что эта помощь.

+0

Спасибо за это. Я использовал это, чтобы игнорировать жест панорамы, который он делает успешно. Однако кнопка моего пользовательского представления по-прежнему не регистрирует крана. – user2013871

+0

I добавлено isDescendantOfView без эффекта. Жесты на жестком диске игнорируются над представлением, но кнопки все еще не отвечают. – user2013871

+0

Попробуйте принести свою кнопку на передней панели. Руда удалите строку, где вы привозите заголовокView спереди, я считаю, что это вызывает проблему – Greg

0

Каждый раз, когда я не могу заставить себя воздействовать на что-то свое, оказывается, что объект виден, но не на самом деле находится в пределах содержащего представления, потому что в представлении нет набора клипов. Возможно, ваши ограничения, связанные с просмотром, не так, как вы думаете. В любом случае, еще один способ преследовать.

+0

Спасибо, Чарли. Я много раз сжигал этот самородок. С тех пор я научился устанавливать цвет фона ярко-красным, когда я отлаживаю, поэтому я могу сразу сказать, если что-то не работает. В этом случае все видно и где оно должно быть. Я обновил оригинальный пост с дополнительной информацией, если у вас есть время, чтобы заглянуть. Спасибо за вашу помощь. – user2013871

Смежные вопросы