2013-08-28 44 views
8

我有一個UIScrollView與幾個子視圖等。我也是scrollView的delegate,並已實施- (void)scrollViewDidScroll:(UIScrollView *)scrollView。在我的卷軸下面還有另一種觀點。取消當前UIScrollView觸摸

我想要顯示該視圖,如果scrollView的contentOffset在x軸上低於50px,請「重置」scrollView的contentOffset並取消當前的scrollView手勢,以便用戶在新視圖出現時不會操作其內容。

我已經實現了,像這樣的方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x < -50) 
    { 
     scrollView.contentOffset = CGPointZero; 
     [self showBackView]; 
     //here I want to cancel the current touch on the scrollview since it keeps scrolling if I drag my finger 
    } 
} 

我試圖設置userInteractionEnabled屬性NO,但它需要觸摸結束後才能生效。我已經嘗試了一堆其他的屬性,但似乎沒有工作。

我該如何解決這個問題?

+0

您是否嘗試將'scrollEnabled'設置爲NO? –

+0

是的,它沒有工作。禁用平移手勢識別器可以完成這項工作。 – Majster

回答

31

嘗試禁用滾動視圖的panGestureRecognizer(然後重新啓用它)。這將取消當前的識別器會話:

self.scrollView.panGestureRecognizer.enabled = NO; 
self.scrollView.panGestureRecognizer.enabled = YES; 
+1

這太好了。我有一個'UITableView'與'UIRefreshControl'的場景,當下拉時,做了一個API調用。在API調用出錯的情況下,出現了一個警告對話。問題是你的觸摸仍然在'UITableView'上,所以你可以交互並調用另一個我們不想要的API調用。現在,取消了「UITableViews」觸摸事件,因爲警報,用戶無法與基礎表視圖交互。 – micnguyen