2013-09-14 2 views
1

У меня есть пользовательский UIView как подзаголовок в UIScrollView.Простой жест щепотки от пользовательского UIView к родительскому UIScrollView

Когда selected, пользователь может изменить размер подсмотра, зажав его в любом месте экрана (суб-вид довольно мал).

Когда deselected, я хотел бы, чтобы этот жест щепотка был передан в UIScrollView, чтобы он мог обрабатывать его, как обычно.

Вот что я пытаюсь.

- (IBAction)pinchInView:(UIPinchGestureRecognizer *)sender { 

    if (self.item.isSelected) 
    { 
     if ((sender.state == UIGestureRecognizerStateChanged) || (sender.state == UIGestureRecognizerStateEnded)) 
     { 
      [self.item resizeWithScaleFactor:sender.scale]; 
     } 
    } else 
    { 
     [self.scrollView setZoomScale:self.scrollView.zoomScale *= sender.scale]; 
    } 
    sender.scale = 1; 
} 

В то время как это действительно работает, это выглядит неудобно.

Есть ли способ разрешить UIScrollView обрабатывать свои собственные масштабирование?

Я в значительной степени использую тот же подход, что и жесты панорамирования.

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

ответ

1

Предоставить делегата для Жесты, которые вы добавили в подвью. Реализация следующего метода в делегат

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecoznizer shouldReceiveTouch:(UITouch *)touch{ 
    if(isSelected == true) 
     return YES; 
    else 
     return NO; 
    } 
+0

Просто чтобы быть более безопасным, я бы также сохранить 'UIPinchGestureRecognizer' в переменной экземпляра этого класса и убедитесь, что' UIGestureRecognizer' входящий в 'gestureRecognizer: shouldReceiveTouch:' это наш распознаватель жестов. Но в целом я поддерживаю этот ответ. – czechboy

0

Реализовать метод ниже делегата

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
Смежные вопросы