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?
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)
}
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
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)
}
}
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)
}
}
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)
}
}