web-dev-qa-db-fra.com

Obtenir les coordonnées de l'endroit où je touche l'écran tactile

J'essaie d'obtenir les coordonnées de l'emplacement où j'ai appuyé sur l'écran tactile pour mettre une image UII spécifique à ce stade.

Comment puis-je faire ceci?

19
Lukas Köhl

Dans une sous-classe UIResponder, telle que UIView:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    let touch = touches.anyObject()! as UITouch
    let location = touch.locationInView(self)
}

Cela retournera une CGPoint dans les coordonnées de la vue. 

Mise à jour avec la syntaxe Swift 3

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    let touch = touches.first!
    let location = touch.location(in: self)
}

Mise à jour avec la syntaxe Swift 4

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch = touches.first!
    let location = touch.location(in: self)
}
31
Mundi

Avancer cela pour Swift 3 - J'utilise:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let position = touch.location(in: self)
        print(position.x)
        print(position.y)
    }
}

Heureux d'entendre des façons plus claires ou plus élégantes de produire le même résultat

18
LittleNose

C'est un travail dans Swift 2.0

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    if let touch = touches.first {
        let position :CGPoint = touch.locationInView(view)
        print(position.x)
        print(position.y)

    }
}
15
kb920

Swift 4.0

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let position = touch.location(in: view)
        print(position)
    }
}

la source

3
Mike Lee

Dernière Swift4.0, pour ViewController

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
    let location = touch.location(in: self.view)
    print(location.x)
    print(location.y)
  }
}
0
vikash kumar