Почему UIButton переопределяет UITapGestureRecognizer? - PullRequest
1 голос
/ 01 октября 2010

У меня есть родительский UIView с 2 подпредставлениями: UIButton и UIScrollView с реализованным UITapGestureRecognizer. UITapGestureRecognizer используется для увеличения и уменьшения масштаба прокрутки, а кнопка используется для отображения / скрытия некоторого текста.

Моя проблема в том, что после того, как я использовал UIButton, UITapGestureRecognizer больше не работает.

Кроме того, UITapGestureRecognizer реализован внутри класса для scrollView, что необходимо для правильного вычисления zoomScale.

Я нашел несколько похожих вопросов, за исключением того, что у них возникла противоположная проблема. Есть идеи?

Спасибо!

Редактировать : Я только что понял, что после использования кнопки, если я прокручиваю или сжимаю / увеличиваю масштаб в scrollView, а затем нажимаю, он снова работает. Он просто не работает сразу после нажатия кнопки.

Кроме того, вот мой код того, как кнопка отображает текстовое представление:

- (void)textImageButtonAction:(id)sender{
    if(self.textView.frame.origin.y < 0){
        [UIView beginAnimations:@"HideTabbar" context:nil];
        [UIView setAnimationDuration:.3];
            textView.frame = CGRectMake(0.0, 0.0, self.view.frame.size.width, footerStringSize.height +10);
        [UIView commitAnimations];
    }
    else if(self.textView.frame.origin.y == 0) {//If the textView is visible
        [UIView beginAnimations:@"HideTabbar" context:nil];
        [UIView setAnimationDuration:.3];
            textView.frame = CGRectMake(0, -footerStringSize.height -10, self.view.frame.size.width, footerStringSize.height +10);
        [UIView commitAnimations];
    }
 }

Ответы [ 3 ]

1 голос
/ 07 октября 2010

Вы пытались позвонить [scrollView becomeFirstResponder]? Это должно заставить его работать.

1 голос
/ 06 октября 2010

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

Как насчет добавления: bringSubviewtoFront: Scrollview

до конца вашего кода UIButton. Идея здесь состоит в том, чтобы сделать ваше представление прокрутки самым передовым видом; что, как я думаю, происходит, когда вы касаетесь вида прокрутки и, таким образом, активируете распознаватель жестов

0 голосов
/ 13 октября 2010

Я наконец-то обратился в службу технической поддержки Apple Developer по этой проблеме, и они просмотрели мой код. Причиной проблемы оказались противоречивые распознаватели жестов в разных классах. Это была проблема первого респондента, но по какой-то причине resignFirstResponder иcomeFirstResponder не оказали никакого влияния.

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

Спасибо всем за помощь.

...