2015-05-20 2 views
0

Я хотел бы изменить UIView во время обратного вызова UIPanGestureRecognizer. Например:Изменение UIView userInteractionEnabled в GestureRecognizer не работает

- (void)handleScroll:(UIPanGestureRecognizer *)recognizer 
    if (recognizer.state == UIGestureRecognizerStateBegan){ 
     self.subview.userInteractionEnabled = NO; 
    } else if (recognizer.state == UIGestureRecognizerStateEnded){ 
     self.subview.userInteractionEnabled = YES; 
    } 
} 

Это никогда не работало в UIPanGestureRecognizer обратного вызова, но он сделал работу, если я пишу код в initWithFrame методы

Я также попытался с помощью performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#> в обратном вызове, но и не работает.

Есть ли какие-либо ограничения на то, что вы не можете сделать в обратном вызове распознавателя жестов?

+0

Проверьте порядок выполнения self.userInteractionEnabled = NO; –

+0

@AshokLondhe Итак, когда начинается распознавание, я хотел бы отключить взаимодействие для всех подзаголовков, и после того, как это закончится, я хочу, чтобы они вернулись. Заказ - это то, что я ожидал. Вы имеете в виду что-то конкретно? – user469652

+0

, если вы используете это, если (распознавание.state == UIGestureRecognizerStateBegan) { self.userInteractionEnabled = NO; } он никогда не работает ... вместо НЕТ писать ДА. –

ответ

0

Я случайно установил cancelsTouchesInView в NO в UIGestureRecognizer. Изменение его на ДА устранило проблему.

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