【问题标题】:How do I implement a UIGestureRecognizer in my app in Swift?如何在 Swift 中的应用程序中实现 UIGestureRecognizer?
【发布时间】:2014-10-30 19:03:27
【问题描述】:

假设我有一张树的图像,当我点击屏幕时,它会变成汽车的图像,我该怎么做?这是我到目前为止的代码,但它不起作用。 (我有三个名为“gp1”、“gp2”和“gp3”的图像,它们都有不同的点击次数来更改图像。)

我在 Spritekit 中并使用 Swift。

class GameScene: SKScene, SKPhysicsContactDelegate {

  //Create Touch
  createTouch()

}


override func didMoveToView(view: SKView) {

  func createTouch() {

    gestureRecognizer.numberOfTapsRequired = 1
    gestureRecognizer2.numberOfTapsRequired = 2
    gestureRecognizer3.numberOfTapsRequired = 3

    gestureRecognizer == UITapGestureRecognizer(target: self, action: "gp2")
    gestureRecognizer2 == UITapGestureRecognizer(target: self, action: "gp3")
    gestureRecognizer3 == UITapGestureRecognizer(target: self, action: "gp1")

  }

}

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    正如 Mundi 所说,对于每个 UIImageView,确保 userInteractionEnabled = true。否则,用户将无法点击图像。然后,创建手势识别器。将操作设置为将处理手势的方法。接下来,将gestureRecognizer 添加到UIImageView。最后,编写处理手势的方法。

    @IBOutlet var gp1: UIImageView!
    @IBOutlet var gp2: UIImageView!
    @IBOutlet var gp3: UIImageView!
    
    func createTouch() {
        // maker sure userInteractionEnabled is true
        gp1.userInteractionEnabled = true;
        gp2.userInteractionEnabled = true;
        gp3.userInteractionEnabled = true;
    
        // create the gesture recognizers
        let gestureRecognizer1 = UITapGestureRecognizer(target: self, action: "tapGesture:")
        let gestureRecognizer2 = UITapGestureRecognizer(target: self, action: "tapGesture:")
        let gestureRecognizer3 = UITapGestureRecognizer(target: self, action: "tapGesture:")
    
        // set the number of taps
        gestureRecognizer1.numberOfTapsRequired = 1
        gestureRecognizer2.numberOfTapsRequired = 2
        gestureRecognizer3.numberOfTapsRequired = 3
    
        // add the gesture recognizer to the UIImageViews
        gp1.addGestureRecognizer(gestureRecognizer1)
        gp2.addGestureRecognizer(gestureRecognizer2)
        gp3.addGestureRecognizer(gestureRecognizer3)
    }
    

    由于这些都是点击手势,我决定使用一种方法和一个 switch 语句。但是,如果您愿意,您可以为每个手势创建不同的方法。

    func tapGesture(gesture: UITapGestureRecognizer) {
        switch gesture.numberOfTapsRequired {
        case 1:
            gp1.image = UIImage(named: "car")
        case 2:
            gp2.image = UIImage(named: "car")
        case 3:
            gp3.image = UIImage(named: "car")
        default:
            break
        }
    }
    

    【讨论】:

      【解决方案2】:

      您需要将识别器添加到视图并实现动作处理程序gp2 等。

      对于UIImageView,您还应该确保userInteractionEnabled 设置为true。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 2016-11-24
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        相关资源
        最近更新 更多