2010-06-03 190 views
0

是否有可能控制UITableView在我自己的代碼中滾動的時間。攔截UITableView滾動觸摸

我試圖讓其中一個垂直的掠過滾動和水平輕掃獲得通過傳遞給我的代碼(其中有很多例子)

我想對角線輕掃什麼也不做的行爲,即UITableView甚至不應該開始滾動。

我試圖在這裏

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

抓住它,但scrollView.contentOffset.x始終爲0,所以我無法檢測的水平移動。

我也試着子類的UITableView和實施

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

等。

但UITableView的(我想這是父母的UIScrollView)開始滾動觸摸被前通知?

要重新迭代,我希望在進行對角滑動時鎖定UITableView滾動,但要正常垂直滾動。

(這種行爲可以看出,在特威特(Twitter)上的iPhone)

感謝您的幫助!

回答

0

如果你可以使用3.2或更高版本,UIGestureRecognizer套件應該允許這樣做。有一系列的調用允許一些手勢取消或與其他手勢互操作,並且您應該能夠創建一個自定義的對角滑動手勢來取消其他手勢,但實際上本身並沒有做任何事情。

在3.2之前,UIScrollView手勢處理基本上是未記錄的。您可以通過標準touchesBegan UIResponder調用檢測輕按,但不檢測移動。我認爲,一旦它檢測到移動,它就會奪取運行循環並捕獲所有事件,繞過正常的事件鏈。

請注意,始終調用setContentOffset。您可以創建UIScrollView的子類,並且在事件跟蹤期間檢測到對角線偏移時,不要將其傳遞給超級。我不知道這是否會發揮作用,但它可以開始。

+0

謝謝,UIGestureRecognizer處理滑動檢測比我用其他方法獲得的更好。我瞄準的iPad如此偉大的工作:-) – dynjo 2010-06-04 07:07:17

+0

順便說一句,你需要做recognizer.cancelsTouchesInView = YES;在你的處理程序中達到我以後的效果。 – dynjo 2010-06-04 07:10:41