この時点で特定のUIImageを配置するために、タッチスクリーンを押した場所から座標を取得しようとします。
これどうやってするの?
UIResponder
などのUIView
サブクラス内:
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject()! as UITouch
let location = touch.locationInView(self)
}
これは、ビュー座標でCGPoint
を返します。
Swift 3構文で更新)
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.first!
let location = touch.location(in: self)
}
Swift 4構文で更新)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first!
let location = touch.location(in: self.view)
}
Swift 3-のためにこれを進めています-私は使用しています:
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)
}
}
同じ結果を得るためのより明確でエレガントな方法を喜んで聞いてください
これは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)
}
}
ViewController用の最新のSwift4.0
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)
}
}
SwiftUIの場合、HostingController.Swift
という名前の新しい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)
}
}
}
次に、SceneDelegate.Swift
の次のコード行を変更しました
window.rootViewController = UIHostingController(rootView: ContentView())
に
window.rootViewController = HostingController(rootView: ContentView())
SwiftUIは、基本的にUIHostingControllerを介してViewControllerにラップされます。少なくとも私はそう思う。
これがお役に立てば幸いです!
ごあいさつkrjw