Отмена жеста касания на кнопке UIB в iPhone - PullRequest
0 голосов
/ 27 января 2011

Я добавил распознаватель жестов касания к представлению. Мой вид имеет изображение и UIToolBar внизу с несколькими кнопками UIB, я хочу отменить любые прикосновения к этим кнопкам. Я пытаюсь использовать следующий метод для отмены касания. Как определить, находится ли касание на панели инструментов или на кнопках панели? Рамка также не определена для кнопок панели ...

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {


    if (gestureRecognizer == tapRecognizer) {
  if (touch.view==barbutton/*toolbar or bar button item*/) 
   {
   return NO;   
  }

    }
    return YES;
}

Ответы [ 2 ]

1 голос
/ 27 января 2011
CGPoint location = [touch locationInView:self.view];
if(CGRectContainsPoint(toolbar.frame, location)) { ... }

Предполагается, что панель инструментов и self.view находятся в одном координатном пространстве.Если нет, вам придется использовать методы преобразования координат UIView (convertPoint:toView:), чтобы пробелы совпадали.

0 голосов
/ 27 января 2011

Кнопки являются первым респондентом, и их uitouchup или другое событие будут срабатывать первыми и не будут распространяться на задний план.

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

[self.nextResponder touchesBegan:touches withEvent:event];

чтобы ваш вид поддержки обрабатывал все их события для них, и в этом случае ваш код жеста должен работать.

...