Slt,
Difficile de te répondre sans savoir ou tu en es dans ton app.
Tu dois utiliser la classe UITouch et les méthodes touchesBegan(), touchesMoved() et touchesEnded()
Regarde
ici
J’ai réussi (via le site d’Apple dev) à coder la fonctionnalité qui permet de détecter les doigts, par contre impossible de trouver comment je pourrais compter le nombre de doigts sur l’écran et ainsi déterminer un nombre aléatoire entre 0 et le nombre de doigt sur l’écran.
Auriez vous une idée ?
Merci d'avance
override func loadView() {
view = TouchableView()
view.backgroundColor = .black
}
}
class TouchableView: UIView {
var touchViews = [UITouch:TouchSpotView]()
override init(frame: CGRect) {
super.init(frame: frame)
isMultipleTouchEnabled =
true
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
isMultipleTouchEnabled =
true
}
override func touchesBegan(
_ touches: Set<UITouch>, with event: UIEvent?) {
for touch
in touches {
createViewForTouch(touch: touch)
}
}
override func touchesMoved(
_ touches: Set<UITouch>, with event: UIEvent?) {
for touch
in touches {
let view = viewForTouch(touch: touch)
// Move the view to the new location.
let newLocation = touch.location(in:
self)
view?.center = newLocation
}
}
override func touchesEnded(
_ touches: Set<UITouch>, with event: UIEvent?) {
for touch
in touches {
removeViewForTouch(touch: touch)
}
}
override func touchesCancelled(
_ touches: Set<UITouch>, with event: UIEvent?) {
for touch
in touches {
removeViewForTouch(touch: touch)
}
}
func createViewForTouch( touch : UITouch ) {
let newView = TouchSpotView()
newView.bounds = CGRect(x: 0, y: 0, width: 1, height: 1)
newView.center = touch.location(in:
self)
// Add the view and animate it to a new size.
addSubview(newView)
UIView.animate(withDuration: 0.2) {
newView.bounds.size = CGSize(width: 100, height: 100)
}
// Save the views internally
touchViews[touch] = newView
}
func viewForTouch (touch : UITouch) -> TouchSpotView? {
return touchViews[touch]
}
func removeViewForTouch (touch : UITouch ) {
if let view = touchViews[touch] {
view.removeFromSuperview()
touchViews.removeValue(forKey: touch)
}
}
}
class TouchSpotView : UIView {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.lightGray
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder
has not been implemented")
}
// Update the corner radius when the bounds change.
override var bounds: CGRect {
get {
return super.bounds }
set(newBounds) {
super.bounds = newBounds
layer.cornerRadius = newBounds.size.width / 2.0
}
}
}