【问题标题】:Touch detection doesn't work on simulator for iOS 9触摸检测不适用于 iOS 9 的模拟器
【发布时间】:2015-12-18 20:28:51
【问题描述】:

我已将 Xcode 更新为 Xcode 7。然后我的 Swift 项目更新为 Swift 2。最后我删除了所有警告。

第一个场景显示几个SKLabel和几个SKSpriteNode

使用 iOS Simulator,触摸检测在 iOS 9 下不工作,但在 iOS 8 上没问题。在touchesBeganmethod 上设置断点表明此方法未被调用。

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

  // Breakpoint is set here
}

编辑

删除这些消息并不能解决任何问题。

控制台显示 4 次警告,仅在 iOS 9 上:

Error loading /System/Library/Extensions/IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin/Contents/MacOS/IOHIDLib:  dlopen(/System/Library/Extensions/IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin/Contents/MacOS/IOHIDLib, 262): no suitable image found.  Did find:
    /System/Library/Extensions/IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin/Contents/MacOS/IOHIDLib: mach-o, but not built for iOS simulator

Cannot find function pointer IOHIDLibFactory for factory 13AA9C44-6F1B-11D4-907C-0005028F18D5 in CFBundle/CFPlugIn 0x7ba430f0 </System/Library/Extensions/IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin> (bundle, not loaded)

【问题讨论】:

  • 禁用 Game Center 功能删除这些消息:在 Project 上,选择 Desired target 并转到 Capabilities。但是触摸检测仍然不起作用。
  • 我相信 iOS 9 中 touchesBegan 的方法签名已更改
  • @BenKane 你是对的,代码已根据此更改进行了修改。所以这不是问题的根源......
  • 此外,我注意到 LaunchImage 也不会在 iOS 9 中显示...
  • 你这么说但没有提供任何代码,所以我们不知道它是否真的如此。你能提供一些上下文代码吗?

标签: sprite-kit ios-simulator swift2 ios9 touchesbegan


【解决方案1】:

好的,问题解决了!

在 StoryBoard 上,初始视图控制器的主要 View 上的 userInteractionEnabled 属性设置为“NO”。改成“YES”即可解决问题。

这很奇怪,因为在 iOS 8 上一切正常。

【讨论】:

    【解决方案2】:

    我在运行 iOS 9.0 的模拟器上遇到了完全相同的问题,结果问题出在语言设置上。我正在发布我的发现,因此它可以帮助遇到同样问题的任何人。

    如果区域设置为印度并且语言设置为“英语 - 印度”,模拟器将停止检测触摸。为了解决这个问题,我重置了模拟器,只将地区更改为印度,因为我的应用功能取决于地区。在将语言保留为“英语 - 美国”时,没有看到问题。

    我不确定还有哪些其他语言或地区/语言组合会导致此问题。希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2017-05-14
      • 2022-10-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多