簡體   English   中英

如何在UIScrollView下獲取UIView來檢測觸摸?

[英]How to get a UIView under a UIScrollView to detect touches?

我有一個UIScrollView ontop我的UIViewController在你現場的頁面上重新創建像Gowalla iPhone應用程序中的效果。 在我的滾動視圖下,我有一個按鈕,我希望能夠執行它的動作,即使滾動視圖的框架覆蓋它(按鈕的頂部,滾動視圖清晰)。 我該怎么辦? 可能嗎? (必須是,Gowalla [不知何故]做到了)

至於我,我將通過覆蓋以下方法將觸摸事件轉移到另一個視圖。

  • - touchesBegan:withEvent:
  • - touchesMoved:withEvent:
  • - touchesEnded:withEvent:
  • - touchesCancelled:withEvent:

像這樣,

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
     // pass touch event by default implement.
     [super touchesBegan:touches withEvent:event]; 

     // redirect the touch events. 
     [anotherView touchesBegain:touches withEvent:event];    
}

hitTest:withEvent:用於決定哪個視圖應該響應視圖層次結構樹上的觸摸事件。 如果視圖不想響應觸摸事件,它將在hitTest中返回nil。 結果,不會調用上述觸摸事件方法。

我不知道這個“Gowalla”應用程序可能做什么; 希望您對“滾動視圖后面的按鈕,您可以通過滾動視圖”進行觸摸的描述是准確的。

如果滾動視圖后面的按鈕大小可以填充滾動視圖的整個contentSize區域而不會搞砸你的界面,最簡單的解決方案就是將它放在滾動視圖中(在所有其他視圖下)並執行此操作。

否則,您最好的選擇可能是創建一個具有清晰背景的自定義視圖,以放置在滾動視圖中,如上所示。 簡單的解決方案是讓自定義視圖(可能是UIControl)只需觸摸按鈕即可。 如果由於某種原因這是不可能的,那么最好的選擇是在自定義視圖上覆蓋hitTest:withEvent:以返回基礎按鈕。 我要警惕在滾動視圖本身上覆蓋hitTest:withEvent:因為這可能會干擾滾動。

嘗試在滾動視圖頂部添加按鈕。 唯一的問題是,如果你點擊按鈕,你將無法與scrollView交互,但它仍然是可見的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM