2013-04-04 32 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