2016-04-22 8 views
1

В моем приложении я подклассифицировал UITableView, чтобы перехватить события касания. Я использую это, чтобы позволить мне отображать жесты 3D Touch на весь вид (в том числе в верхней части таблицы).3D Touch force gesture активирует кран на касание на конце

Это прекрасно работает, однако проблема заключается в том, что использование 3D Touch на одной из ячеек, а затем отпускание пальца активирует кран.

Мне нужно активировать кран, если нет силы. Я должен объяснить, что постепенно меняю изображение по всему экрану при приложении давления.

Вот мой подкласс:

protocol PassTouchesTableViewDelegate { 
    func touchMoved(touches: Set<UITouch>) 
    func touchEnded(touches: Set<UITouch>) 
} 

class PassTouchesTableView: UITableView { 
    var delegatePass: PassTouchesTableViewDelegate? 

    override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     super.touchesMoved(touches, withEvent: event) 

     self.delegatePass?.touchMoved(touches) 
    } 

    override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     super.touchesEnded(touches, withEvent: event) 

     self.delegatePass?.touchEnded(touches) 
    } 
} 

А вот методы, которые я звоню из моей точки зрения контроллера, когда штрихи конца и двигаться:

internal func touchMoved(touches: Set<UITouch>) { 
    let touch = touches.first 

    self.pressureImageView.alpha = (touch!.force/2) - 1.0 
} 

internal func touchEnded(touches: Set<UITouch>) { 
    UIView.animateWithDuration(0.2, animations: { 
     self.pressureImageView.alpha = 0.0 
    }) 
} 

ответ

1

Вы могли бы создать логическое имени isForceTouch который установлен в false в touchhesBegan, а затем, как только обнаружено силовое касание, установите его в true. Затем в didSelectRowAtIndexPath просто возвращает false, если isForceTouch - true. Возможно, это потребует настройки, но это должно сработать.

+0

Отлично работает. Благодаря! – user3746428

 Смежные вопросы

  • Нет связанных вопросов^_^