2013-07-26 204 views
1

我已經實現了我自己的自定義子類UIView並覆蓋了drawRect:方法。觸摸UIView子類的事件作爲UIScrollView的子視圖

在我的自定義視圖中,我也想處理觸摸,所以我也覆蓋了touchesBegan,touchesMovedtouchesEnded

這工作正常,但如果屏幕上的視圖數量增加,那麼我不得不使用UIScrollView作爲我的UIViewController的根視圖。

一旦我的自定義UIView成爲UIScrollView的子視圖,它就不會收到觸摸事件。即使我在我的自定義UIView範圍內移動手指,滾動視圖也會滾動(所有觸摸事件都會轉到UIScrollView)。

我該如何解決這個問題?

回答

6

有幾種方法可以嘗試:

  1. 嘗試在UIScrollView設置如下屬性:

    scrollView.delaysContentTouches = NO;
    scrollView.canCancelContentTouches = NO;

    查看類似的SO問題/解答herehere

  2. 實施hitTest:withEvent:。見herehere

  3. 使用UIGestureRecognizer。見herehere

我個人建議使用UIGestureRecognizer,但要看你的具體情況(所有這些選項可以正常工作了你)。

+0

感謝Steph它的工作:) – user2217812

+0

第一步爲我工作!謝謝! – Rambatino

+2

我有完全相同的問題。添加delayedContentTouches使滾動不起作用 – doxsi

相關問題