gpt4 book ai didi

ios - 如何让我的应用程序忽略特定触摸?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:59:53 26 4
gpt4 key购买 nike

我的 iPad 应用程序需要能够完全消除特定的触摸,即来自手指或触控笔的触摸,不是来自您的手掌的触摸。该 View 启用了多点触控,因此我可以分别分析每个触摸。

我目前可以使用 majorRadius 属性区分这些触摸,但我不确定如何才能消除较大的触摸,即那些大于我决定的阈值的触摸。

let touchThreshold : CGFloat = 21.0

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
if touch.majorRadius > touchThreshold {
//dismiss the touch(???)
} else {
//draw touch on screen
}
}
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
if touch.majorRadius > touchThreshold {
//dismiss the touch(???)
} else {
//draw touch on screen
}
}
}

最佳答案

如果您只想检测某些类型的触摸,这里有一个可能的解决方案:

选项 1

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
touches.forEach { touch in
switch touch.type {
case .direct, .pencil:
handleTouch(for: touch.majorRadius)
case .indirect:
// don't do anything
return
}
}
}

func handleTouch(for size: CGFloat) {
switch size {
case _ where size > touchThreshold:
print("do something")
default:
print("do something else")
}
}

选项 2

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
touches.filter{($0.type == .direct || $0.type == .pencil || $0.type == .stylus) && $0.majorRadius > touchThreshold}.forEach { touch in
print("do something")
}
}

更多触摸类型可以阅读here .

关于ios - 如何让我的应用程序忽略特定触摸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54358278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com