我的应用程序在每个屏幕上都有相当多的按钮以及UIBarButtonItem后退按钮,我遇到了人们可以使用多点击按钮的问题。我一次只需要一个按钮就可以点击。
有没有人知道如何使UIBarButtonItem后退按钮专用于触摸?
我设法通过将每个人的视图设置为isExclusiveTouch = true来禁用多次点击UIButtons,但这似乎并不计入导航栏中的后退按钮。
后退按钮似乎不符合isExclusiveTouch。
有没有人做过一个简单的解决方法,不会对每个按钮发送事件进行编码?
非常感谢,
Krivvenz。
答案 0 :(得分:3)
您可以启用独占触摸,这样可以在第一次触摸完成之前停止多次触摸
buttton.exclusiveTouch = true
答案 1 :(得分:1)
您可以为UIBarButtonItem编写一个扩展名来添加isExclusiveTouch?
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以在要禁用多次触摸的场景中尝试此操作。
let skView = self.view as! SKView
skView.isMultipleTouchEnabled = false
答案 4 :(得分:0)
我找到了解决方案。 isExclusiveTouch最终是解决方案,但之所以没有执行任何操作是因为您还需要在要设置为isExclusiveTouch = true的每个按钮的所有子视图上进行设置。然后它按预期方式工作:)
答案 5 :(得分:0)
在Swift中运行正常
self.view.isMultipleTouchEnabled = false
buttonHistory.isExclusiveTouch = true
答案 6 :(得分:0)
除了@Luky Lízal 的回答之外,您还需要注意,您想要禁用多点触控的视图的所有子视图(完全在层次结构中,实际上是子视图的子视图)必须设置为 isExclusiveTouch = true
。
您可以像这样递归地遍历所有这些:
extension UIView
{
func allSubViews() -> [UIView] {
var all: [UIView] = []
func getSubview(view: UIView) {
all.append(view)
guard view.subviews.count > 0 else { return }
view.subviews.forEach{ getSubview(view: $0) }
}
getSubview(view: self)
return all
}
}
// Call this method when all views in your parent view were set
func disableMultipleTouching() {
self.isMultipleTouchEnabled = false
self.allSubViews().forEach { $0.isExclusiveTouch = true }
}