I try to get the coordinates from the location where I hit the touchscreen to do put a specific UIImage at this point.
How can I do this?
I try to get the coordinates from the location where I hit the touchscreen to do put a specific UIImage at this point.
How can I do this?
In a UIResponder
subclass, such as UIView
:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject()! as UITouch
let location = touch.locationInView(self)
}
This will return a CGPoint
in view coordinates.
Updated with Swift 3 syntax
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.first!
let location = touch.location(in: self)
}
Updated with Swift 4 syntax
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: self.view)
}
let location = touch.locationInView(self.view)
–
Merv Taking this forward for Swift 3 - I'm using:
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)
}
}
Happy to hear any clearer or more elegant ways to produce the same result
This is work in 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)
}
}
For SwiftUI I created a new swift file called HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let position = touch.location(in: view)
print(position)
}
}
}
Then I changed the following lines of code in the SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
to
window.rootViewController = HostingController(rootView: ContentView())
SwiftUI is basically wrapped in a ViewController via the UIHostingController. At least thats how I think it is.
I hope this helps!
Greetings krjw
Latest swift4.0, For 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)
}
}
© 2022 - 2024 — McMap. All rights reserved.
UITapGestureRecognizer
, see: https://mcmap.net/q/472170/-how-to-get-tap-point-coordinates-in-ios-swift – Chandler