延迟轻击手势和弹出警报振动

时间:2016-12-16 07:54:18

标签: ios xcode swift3

我在需要感觉更加即时的应用中遇到了很多延迟。

我有一个简单的应用程序左右切换。这是一个跷跷板,当一端上升时,另一端下降。你应该用两根手指点击屏幕就像你刚刚坐立不安。它应该是对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
        }
    }
}

另一个想法 - 将它作为按钮实现会更快吗?手势识别器只是慢吗?我绘制图像的方式是否消耗了错误的类型处理能力?

1 个答案:

答案 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)