簡體   English   中英

如果視圖注冊平移手勢,則捏合手勢不起作用

[英]Pinch gesture does not work if view registers pan gesture

我有一個用手勢操縱視圖的應用程序。 視圖與平移、捏合和旋轉手勢有關。 如果我開始用兩個手指與視圖交互,則所有手勢都同時工作(預期行為)。 但是,如果您從一個手指平移開始,則捏合和旋轉手勢不起作用。 當我嘗試在平移時開始捏合或旋轉時,不會調用委托中的任何方法。

shouldRecognizeSimultaneouslyWith

永遠是真的。

預期行為,

  1. 一個手指平移視圖
  2. 添加第二根手指並開始捏/旋轉交互(類似於 Instagram 故事編輯器)

從一個干凈的項目中,我添加了以下內容:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        view.addGestureRecognizer({
            let gesture = UIPanGestureRecognizer(target: self, action: #selector(onPan))
            gesture.delegate = self
            return gesture
        }())
        view.addGestureRecognizer({
            let gesture = UIPinchGestureRecognizer(target: self, action: #selector(onPinch))
            gesture.delegate = self
            return gesture
        }())
        view.addGestureRecognizer({
            let gesture = UIRotationGestureRecognizer(target: self, action: #selector(onRotate))
            gesture.delegate = self
            return gesture
        }())
    }
    
    @objc private func onPan(_ sender: UIPanGestureRecognizer) {
        print("Did pan to \(sender.translation(in: sender.view))")
    }
    
    @objc private func onPinch(_ sender: UIPinchGestureRecognizer) {
        print("Did pinch to \(sender.scale)")
    }
    
    @objc private func onRotate(_ sender: UIRotationGestureRecognizer) {
        print("Did rotate to: \(sender.rotation)")
    }


}

extension ViewController: UIGestureRecognizerDelegate {
    
    func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { true }
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { true }
    
}

在您描述的場景之后,所有 3 種方法都會報告更改:

  • 我從單點觸摸拖動手勢開始
  • 我按下另一個手指開始旋轉手勢和捏手勢

這個例子對你不起作用嗎? 您正在經歷的行為是什么以及預期的行為是什么?

暫無
暫無

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

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