передать событие прокрутки из Uibutton в Uiscrollview - PullRequest
9 голосов
/ 17 сентября 2010

у меня есть горизонтальная UIScrollView, которая расширена от UIScrollView, и я добавил UIButtons по горизонтали. я могу только прокрутить область кнопок, но если я хочу прокрутить любую из кнопок, происходит событие UIControlEventTouchUpInside. Я не хочу этого я хочу запустить UIControlEventTouchUpInside действие, если я нажму, и я хочу прокрутить, если я прокручиваю.

так как я могу передать событие прокрутки с UIButton на UIScrollView?

Ответы [ 4 ]

4 голосов
/ 12 августа 2015

Подкласс UIScrollView, верните YES в методе - touchesShouldCancelInContentView:.

3 голосов
/ 30 января 2011

эта функциональность уже встроена. Когда у вас есть элемент UIControl в качестве подпредставления представления прокрутки и обнаруживается событие касания, он первоначально передается в UIScrollView. Если через мгновение или два в событии касания не было достаточного движения, оно передается кнопке.

0 голосов
/ 06 февраля 2013

Попробуйте это:

self.button.exclusiveTouch = YES

Сработало как шарм для меня!

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

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

Следующее действие заставит кнопку никогда не вызывать событие, и вместо этого все будет обрабатываться родительским представлением:

- (void)touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event {
    [self.nextResponder touchesBegan:touches withEvent:event];      
}

- (void)touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event {
    [self.nextResponder touchesMoved:touches withEvent:event];  
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event 
{
    [self.nextResponder touchesEnded:touches withEvent:event];  
}

Если вы хотите, чтобы кнопка имела дело с одним из этих событий, вместо этого используйте

[super touchesEnded:touches withEvent:event];
...