ios中每个触摸点是否有指针
Is there a pointer for each touch point in ios
我到处研究,找不到ios中每个接触点是否有唯一标识符。我还想知道如何在 swift 中访问它,但找不到任何相关文档。
不是真正针对每个点,而是针对每次触摸。要访问它们需要您自己的触摸处理,例如在发生触摸的 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,当您向字典询问相应的对象时,字典将 return 为零。
现在您可以将自己的指针分配给那些触摸点,知道它们都属于同一个触摸事件。
我到处研究,找不到ios中每个接触点是否有唯一标识符。我还想知道如何在 swift 中访问它,但找不到任何相关文档。
不是真正针对每个点,而是针对每次触摸。要访问它们需要您自己的触摸处理,例如在发生触摸的 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,当您向字典询问相应的对象时,字典将 return 为零。
现在您可以将自己的指针分配给那些触摸点,知道它们都属于同一个触摸事件。