簡體   English   中英

如何將單點觸摸傳遞給底層視圖但保持 UIPanGestureRecognizer 工作?

[英]How to pass single touches to underlying views but keep the UIPanGestureRecognizer working?

我為我的表格和集合視圖構建了一個自定義索引視圖,因此用戶可以輕松地滾動瀏覽內容。 但是,某些單元格中的附件按鈕位於單元格的右側。 如果索引視圖太寬,它會阻止按鈕接收觸摸。

我不希望索引視圖響應單次觸摸,只響應滑動,所以我使用了UIPanGestureRecognizer並使用UIGestureRecognizedDelegate方法來實現這一點,但我沒有找到任何解決方案。 我無法在索引視圖上設置userInteractionEnabled ,因為它會破壞平移手勢識別器。

這甚至有可能達到這種效果嗎?

將此添加到您的自定義索引視圖的子類中:-

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {

    var hitTestView = super.hitTest(point, with: event)
    if (event?.type == UIEvent.EventType.touches) && (hitTestView is Self) {
        hitTestView = nil
    }
    return hitTestView
}

hitTest 是一個非常強大的方法。 如果在同一點有多個重疊的視圖或子視圖,它也可以用來確定哪個視圖應該接收觸摸。 這是一個很好的教程,可以更多地了解這個特性(盡管它在 Objective C 中):-點擊測試 iOS

暫無
暫無

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

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