我想在用戶開始拖動時檢測我的UIScrollView中的(初始)觸摸位置。我搜索了這個問題,很多人似乎都在爲這個問題而努力。現在,雖然我仍然無法理解Apple爲什麼不讓用戶在滾動視圖中訪問觸摸信息,但我不禁要自己找到解決方案。然而,我所有的嘗試都失敗了,所以我想問你。在UIScrollView上檢測觸摸位置?
這裏是我想會的工作:
我成立了一個UIPanGestureRecognizer像這樣在我的UIScrollView子類,並將其添加到它的手勢識別:
UIPanGestureRecognizer *tapDrag = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(touchedAndDragged:)];
tapDrag.cancelsTouchesInView = NO;
tapDrag.delegate = self;
[self addGestureRecognizer:tapDrag];
和相應的方法:
-(void)touchedAndDragged:(UIPanGestureRecognizer*)t{
CGPoint loc = [t locationInView:self];
//do something with location (that is exactly what I need)
//...
//Now DISABLE and forward touches to scroll view, so that it scrolls normally
t.enabled = NO;
/****
?????
*****/
}
正如評論所示,我想禁用平移手勢後,我有點,然後禁用識別器(而仍然拖動!)並將觸摸「傳遞」到我的滾動視圖,以便用戶可以正常滾動。這是否可行?還有其他解決方案嗎?
是否有可能檢測出這個滾動是否在某個xx位置,然後scrollView滾動或觸摸將不會被觸發?假設我在滾動視圖中有兩個視圖,一個地圖和一個面板在地圖下方,我不希望滾動視圖在我觸摸地圖時觸發其代表,並且地圖應該觸及它 –