gpt4 book ai didi

ios - ios中每个触摸点是否都有一个指针

转载 作者:行者123 更新时间:2023-11-28 05:31:45 25 4
gpt4 key购买 nike

我到处研究,找不到在ios中是否有每个触摸点的唯一标识符。我也想知道如何快速访问它,但找不到任何文档。

最佳答案

不是真正针对每个点,而是针对每次触摸。要访问它们需要您自己的触摸处理,例如在发生触摸的 UIView 或其 ViewController 中。这只需要您为 touchesBegan:withEvent:touchesMoved:withEvent:touchesEnded:withEvent: 编写自己的方法。

touchesBegan:withEvent:touchesMoved:withEvent:touchesEnded:withEvent: 被 iOS 调用时,它们会在一个NSSet。该集合中的每个成员都是指向触摸数据结构的唯一指针,如果您想随时间过滤触摸,您应该将它们用作 NSMutableDictionary 中的键。

就像touchesBegan中那样,当你第一次遇到触摸时:

var pointDict: [String?: NSObject?] = [:]

...

func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

// Regular multitouch handling.
for touch in touches.allObjects as UITouch {
// Create a new key from the UITouch pointer:
let key = \(touch)
// Put the point into the dictionary as an NSValue
pointDict.setValue(NSValue(CGPoint: touch.locationInView(myView)), forKey:key)
}
}

现在在 touchesMoved 中,您需要根据存储的键检查指针:

func touchesMoved(touches: NSSet, withEvent event: UIEvent) {

for touch in touches.allObjects as UITouch {
// Create a new key from the UITouch pointer:
let key = \(touch)

// See if the key has been used already:
let oldPoint = pointDict[key]
if oldPoint != nil {
(do whatever is needed to continue the point sequence here)
}
}
}

如果已经有一个条目使用相同的 touchID 作为其键,您将取回该键的存储对象。如果之前的触摸没有使用该 ID,当您向它询问相应的对象时,字典将返回 nil。

现在您可以将自己的指针分配给这些触摸点,因为知道它们都属于同一个触摸事件。

关于ios - ios中每个触摸点是否都有一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27746459/

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