2013-04-04 51 views
5

的UIButton触摸我有一个UIScrollView内的一些UIButtons,但我不希望延迟按钮触摸。但是,只要滚动视图检测到拖动/滚动,我想取消UIButton触摸并继续滚动UIScrollView。iOS版的UIScrollView取消滚动

我已经包括以下...

_scrollView.delaysContentTouches = NO; 

...但(显然)拖动按钮时,触摸不会取消。有没有人对我如何实现这个功能有任何建议?

回答

7

您可以覆盖的UIScrollView此方法。

-(BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
    return YES; 
} 

而在你的UIButton中,你应该为不同的控制事件添加不同的方法。

  1. 显示UIControlEventTouchDown的突出显示效果。
  2. UIControlEventTouchUpInside | UIControlEventTouchUpOutside触发按钮;
  3. UIControlEventTouchCancel清晰的高亮效果。
+1

这是所需的解决方案。谢谢。 – lucien 2013-09-11 20:36:14

+0

UIControlEventTouchCancel是我错过的一个通知,它工作。谢谢! – cgossain 2014-03-07 17:12:04

1

你可以使用scrollViewWillBeginDragging到断火的通知,并通过在按钮的代码侦听它的处理按钮取消。我认为这就是你想要做的,但我不确定是否我已经正确理解你的问题。

+0

感谢您的反馈。我试过scrollViewWillBeginDragging,但是如果你在滚动之前点击一个按钮,它就不会触发。我想要的是点击一个按钮,但没有任何延迟。然后,如果您在手指仍然下滑时移动手指,则会取消该按钮并开始滚动。 – lucien 2013-04-04 20:18:24

+0

在iOS主屏幕上尝试此操作...轻按应用程序,然后您会注意到它会变暗,但只要您拖动手指,就会取消触摸并滚动屏幕 – lucien 2013-04-04 20:19:19

+0

因此,您希望按钮立即触发一个动作,但当滚动视图被拖动取消了?一旦你按下按钮,然后拖动,scrollViewWillBeginDragging不会被调用?主屏幕的好例子。 – Psiticosis 2013-04-04 20:52:11