2013-07-07 2 views
0

У меня есть scrollview с некоторыми подзонами как плитки. Скроллвью имеет свои «Задержки для контента» и «Отменить доступ к содержимому», установленным на «ДА».
Я фиксирую штрихи в каждом подзоне с touchesBegan, touchesEnded и touchesMoved.Как отменить прокрутку при касании коснуться

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

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

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

ответ

0

Если вы хотите обнаружить штрихи внутри любого из подсмотров UIScrollView, вам придется подклассифицировать UIScrollView и переопределить touchsShouldBegin и коснуться методовShouldCancelInContentView, которые специально созданы для этой цели.

Кроме этого, вы не можете идентифицировать касания в подзонах, так как UIScrollView имеет тенденцию обрабатывать все касания и не передает их в свои подзоны.

Предоставлено: - https://stackoverflow.com/a/392562/1865424

Если у Вас возникли дополнительные вопросы относительно this.Happy, чтобы помочь вам.

+0

Это не правильно, потому что я ничего особенного не делать с моим UIScrollView, и даже дезактивировать Жесты я мог бы добавить, что я могу Cath штрихи в моих подвидов. Проблема в том, что когда они зацепились, все еще есть короткий момент, когда UIScollView продолжает обрабатывать свиток, а не то, что происходит, когда затрагивается суб-UIButton. – Oliver

0

В зависимости от того, что вы пытаетесь сделать, может быть, вы можете добавить:

UILongPressGestureRecognizer *longPressDetect = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(disableScrolling:)]; 

[subView addGestureRecognizer:longPressDetect]; 

, а затем добавить метод, отключить и повторно включить Scrollview прокрутку, таких как:

-(void)disableScrolling:(UILongPressGestureRecognizer*)longPress { 

    if (gesture.state == UIGestureRecognizerStateBegan) { 
     scrollView.scrollEnabled = NO; 
    } 

    if (gesture.state == UIGestureRecognizerStateEnded) { 
     scrollView.scrollEnabled = YES; 
    } 
} 
+0

Спасибо, но это всего лишь трюк, который не нужен для UIButton, как показано в моем примере. Я просто хочу сделать с моим осязаемым UIView то, что сделано UIButton, чтобы предотвратить прокрутку. – Oliver

1

Я решил это добавить этот код в touchhesBegan и touchsEnded, когда touch поймал subview.

UIView* superView = self.view.superview; 
while (superView != nil) { 
    if ([superView isKindOfClass:[UIScrollView class]]) { 
     UIScrollView* superScroll = (UIScrollView*)superView; 
     superScroll.scrollEnabled = YES/NO; // put the right value depending on the touch method you are in 
    } 

    superView = superView.superview; 
} 
Смежные вопросы