UIPanGestureRecognizer在操场上

问题描述 投票:0回答:1

我正在操场上玩(很棒,对吗?]

如果我想使用模拟器进行捏合手势,则可以使用选项并移动鼠标来执行捏合手势。

相同的组合在Playgrounds中没有任何作用。

对于某些示例代码,您可以复制-粘贴以下内容:

import UIKit
import PlaygroundSupport

class MyViewController: UIViewController {

    let clickableView = UIView()

    override func loadView() {
        let view = UIView()
        view.backgroundColor = .lightGray

        clickableView.backgroundColor = .blue

        view.addSubview(clickableView)

        clickableView.translatesAutoresizingMaskIntoConstraints = false
        clickableView.widthAnchor.constraint(equalToConstant: 200).isActive = true
        clickableView.heightAnchor.constraint(equalToConstant: 200).isActive = true
        clickableView.centerYAnchor.constraint(equalTo:view.centerYAnchor).isActive = true
        clickableView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
        self.view = view
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let pan = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
        clickableView.addGestureRecognizer(pan)

        let pinch = UIPinchGestureRecognizer(target: self, action: #selector(handlePinch(_:)))
        clickableView.addGestureRecognizer(pinch)
    }

    @objc func handlePinch(_ sender: UIPinchGestureRecognizer) {        
        guard let gestureView = sender.view else {
          return
        }

        gestureView.transform = gestureView.transform.scaledBy(
          x: sender.scale,
          y: sender.scale
        )
        sender.scale = 1
    }

    @objc func handlePan(_ sender: UIPanGestureRecognizer) {
        guard let targetView = sender.view else {return}
        let translation = sender.translation(in: view)
        targetView.center = CGPoint(x: targetView.center.x + translation.x
            ,y: targetView.center.y + translation.y)
        sender.setTranslation(CGPoint.zero, in: view)
    }
}

PlaygroundPage.current.liveView = MyViewController()

有什么方法可以在Playgrounds中测试捏手势吗?

swift xcode swift-playground
1个回答
0
投票

您实际上可以使用选项键在操场上做两个手指的手势,但这有点挑剔。

  1. 您需要确保先单击实时显示。有时这是行不通的-否则,请继续重新运行游乐场,直到将鼠标悬停在实时视图上方时,光标变成一点指针。然后单击查看并按住选项。您应该在鼠标指针周围看到至少一个灰色圆圈。
  2. 代表您的两个手指的两个灰色圆圈的起始中心实际上在一个奇怪的地方。在我的实验中,它始终为CGPoint(x: 384, y: <half of your live view's height>),这可能是因为游乐场使用的设备是iPad Pro(9.7英寸),其屏幕尺寸为768x1024(并且384 = 768/2)。因此,如果在执行上述(1)之后没有看到另一个圆圈,请尝试将实时视图变大,例如768x1024,或者在按住Option的同时使用shift键将另一个圆圈拖入视图。这很棘手,但是可以做到。您必须将鼠标移至实时视图的右侧,按住Option + Shift,将其拖至实时视图的左侧,释放Shift(但not选项),再次拖动至右侧,然后然后重复几次,直到看到两个灰色圆圈。

证明可以在操场上完成:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9kUHBHcS5wbmcifQ==” alt =“在操场上的两指圆圈”>

© www.soinside.com 2019 - 2024. All rights reserved.