gpt4 book ai didi

ios - 在 Swift 中识别触摸

转载 作者:可可西里 更新时间:2023-10-31 23:45:09 26 4
gpt4 key购买 nike

你好,

我是 Swift(以及所有面向对象的语言)的新手,我正在创建一个 iPad 应用程序,让您可以用手指绘图。我目前正在尝试正确管理多点触控事件,并且我想跟踪触摸。这个想法是只在一次触摸后绘制,并丢弃其他触摸,即使在初始触摸结束后也忽略它们。

为此,我需要识别每个触摸,但 UITouch 对象不包含 ID。实际上,由于触摸存储在 NSSet 中,因此它们没有顺序。

在互联网上犯错,我找到了一个可能的解决方案,将触摸的地址存储在 CFDictionary 中。这在 Objective-C 中似乎是合理的,但 Swift 对指针不是很友好,而且我还没有设法创建一个 CFDictionary 将 UITouch 上的指针作为值。

有人知道怎么处理吗?我是否使用了 CFDictionaries 错误(我尝试将 UnsafePointer<UITouch> 作为值)?还有其他我忽略的解决方案吗?

感谢您的帮助。

最佳答案

我只想要一个简单的触摸键,并使用 UITouch 的字符串插值来获得一个。我触摸的字符串插值如下所示:

<UITouch: 0x1046355b0> phase: Began tap count: 1 force: 0.000 window: <UIWindow: 0x10462beb0; frame = (0 0; 414 736); gestureRecognizers = <NSArray: 0x1c0247fe0>; layer = <UIWindowLayer: 0x1c02325a0>> view: <SCNView: 0x104624be0 | scene=<SCNScene: 0x1c4129ec0> sceneTime=0.000000 frame={{0, 0}, {414, 736}} pointOfView=<SCNNode: 0x1c43f9400 rot(0.000000 1.000000 0.000000 3.141593) | camera=<SCNCamera: 0x10475af60> | no child>> location in window: {220, 344} previous location in window: {220, 344} location in view: {220, 344} previous location in view: {220, 344}

我只需要第二部分,所以我编写了以下方法来提取它。

func getTouchKey(touch:UITouch) -> String {
let interpolation = "\(touch)"
let parts = interpolation.split(separator: " ", maxSplits: 3, omittingEmptySubsequences: true)
let touchKey = String(parts[1])
return touchKey
}

在这种情况下,它返回:

0x1046355b0>

如有必要,我可以清理它,但由于它在触摸的整个生命周期内已经是可重复的,所以我没有添加任何其他东西。

关于ios - 在 Swift 中识别触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042905/

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