Swift 2.0 如何检测用户握住而不只是点击
Swift 2.0 How to detect that the user holds instead of just tapping
我正在寻找一种方法来检测用户是否按住屏幕(按住屏幕 1 秒)我尝试使用计时器但我没有用。这是我现在拥有的代码。
var brakeTimer = NSTimer()
func update () {
print("The user is holding the screen")
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
var brakeTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true)
}
override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
brakeTimer.invalidate()
}
界面上的 "Holding" 在 iOS 开发中通常称为 "Long Pressing"。以下是设置其中之一的方法:
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
self.view.addGestureRecognizer(longPressRecognizer)
func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
}
与简单的点击识别器不同,后者会在用户只需点击屏幕而不是按住更长的时间时触发。
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:")
self.view.addGestureRecognizer(tapGestureRecognizer)
func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
}
我正在寻找一种方法来检测用户是否按住屏幕(按住屏幕 1 秒)我尝试使用计时器但我没有用。这是我现在拥有的代码。
var brakeTimer = NSTimer()
func update () {
print("The user is holding the screen")
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
var brakeTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true)
}
override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
brakeTimer.invalidate()
}
"Holding" 在 iOS 开发中通常称为 "Long Pressing"。以下是设置其中之一的方法:
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
self.view.addGestureRecognizer(longPressRecognizer)
func longPressed(sender: UILongPressGestureRecognizer)
{
println("longpressed")
}
与简单的点击识别器不同,后者会在用户只需点击屏幕而不是按住更长的时间时触发。
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapped:")
self.view.addGestureRecognizer(tapGestureRecognizer)
func tapped(sender: UITapGestureRecognizer)
{
println("tapped")
}