我在需要感觉更加即时的应用中遇到了很多延迟。
我有一个简单的应用程序左右切换。这是一个跷跷板,当一端上升时,另一端下降。你应该用两根手指点击屏幕就像你刚刚坐立不安。它应该是对ADHD的帮助。
我有左右两个大图像。我在图像上识别出一个手势,然后检查水龙头的坐标,确定是否敲击右侧向下或向左。我也使用AudioServicesPlayAlertSound在触摸开始时引起一个小的弹出振动,以便为用户提供一些反馈激励。
在我的测试中,如果我快速点击,似乎我在切换上得到了积压的点击。在水龙头结束后振动发生,因此感觉无用。有时UI图像只是在图像之间切换。
override func viewDidLoad() {
super.viewDidLoad()
let imageView = Seesaw
let tapGestureRecognizer = UILongPressGestureRecognizer(target:self, action: #selector(SeesawViewController.tapped));
tapGestureRecognizer.minimumPressDuration = 0
imageView?.addGestureRecognizer(tapGestureRecognizer)
imageView?.isUserInteractionEnabled = true
}
func tapped(touch: UITapGestureRecognizer) {
if touch.state == .began {
if(vibrateOn){
AudioServicesPlaySystemSound(1520)
}
let tapLocation = touch.location(in: Seesaw)
if(tapLocation.y > Seesaw.frame.height/2){
print("Go Down")
Seesaw.image = UIImage(named:"Down Seesaw");
seesawUp = false
} else if (tapLocation.y < Seesaw.frame.height/2){
print("Go Up");
Seesaw.image = UIImage(named:"Up Seesaw");
seesawUp = true
}
}
}
另一个想法 - 将它作为按钮实现会更快吗?手势识别器只是慢吗?我绘制图像的方式是否消耗了错误的类型处理能力?
答案 0 :(得分:0)
Sems就像你在代码中犯了错误一样。您想要创建点按识别器,但您创建了UILongPressGestureRecognizer
请从
更改行 let tapGestureRecognizer = UILongPressGestureRecognizer(target:self, action: #selector(SeesawViewController.tapped))
到
let tapGestureRecognizer = UITapGestureRecognizer(target:self, action: #selector(SeesawViewController.tapped))
或者您可以添加透明按钮并将代码放入其处理程序
// onDown will fired when user touched button(not tapped)
button.addTarget(self, action: #selector(onDown), for: .touchDown)