3D Touch 力手势激活触摸端的单元格点击
3D Touch force gesture activates cell tap on touch end
我在我的应用程序中对 UITableView
进行了子类化,以便我可以拦截触摸事件。我正在使用它来允许我在整个视图(包括 table 视图的顶部)上提供 3D Touch 手势。
效果很好,但问题是在其中一个单元格上使用 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
})
}
您可以创建一个名为 isForceTouch 的布尔值,在 touchesBegan 中将其设置为 false,然后一旦检测到强制触摸,将其设置为 true。然后在 didSelectRowAtIndexPath 中,如果 isForceTouch 为真,则 return 为假。它可能需要调整,但应该可以。
我在我的应用程序中对 UITableView
进行了子类化,以便我可以拦截触摸事件。我正在使用它来允许我在整个视图(包括 table 视图的顶部)上提供 3D Touch 手势。
效果很好,但问题是在其中一个单元格上使用 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
})
}
您可以创建一个名为 isForceTouch 的布尔值,在 touchesBegan 中将其设置为 false,然后一旦检测到强制触摸,将其设置为 true。然后在 didSelectRowAtIndexPath 中,如果 isForceTouch 为真,则 return 为假。它可能需要调整,但应该可以。