UITouch 不适用于 ios8

Posted

技术标签:

【中文标题】UITouch 不适用于 ios8【英文标题】:UITouch is not working with ios8 【发布时间】:2014-12-30 09:46:52 【问题描述】:

我正在开发一个应用程序。连续抓图,一键停止抓图。但问题是按钮目标方法没有被调用。即使我点击屏幕上的任何地方,它都没有检测到触摸或手势。我已经实现了手势和触摸委托方法来检查。捕获图像不在主线程上,因此主线程是空闲的。所以我无法找到视图无法检测到触摸的原因。该特定视图上几乎有 6-7 个按钮,它们都没有触发它们的方法。在使用 ios7 正常运行时,它还会检测到触摸和按钮目标方法触发器。

我认为应该有与这些按钮重叠的任何视图,所以我打印了 subview 的股份,如下所示。停止捕获的按钮带有文本“START”。我只是在“开始”按钮后分享了股份,因为我认为最后一个项目将在视图的顶部。

<UIButtonLabel: 0x15dfb0d0; frame = (5 14; 41 16); text = 'START';
 opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer:
 0x15dfb190>>

 <UIButton: 0x15e8c590; frame = (63 7; 36 32); opaque = NO; autoresize
 = RM+BM; layer = <CALayer: 0x15e8c690>>

 <UIButtonLabel: 0x15df0400; frame = (15 10; 6 12); text = '0'; opaque
 = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x15d98db0>>

 <UIImageView: 0x15e97c00; frame = (-295 -272; 1557 1568);
 clipsToBounds = YES; hidden = YES; autoresize = W+H;
 autoresizesSubviews = NO; layer = <CALayer: 0x15ea2920>>

 <_UILayoutGuide: 0x15e90ba0; frame = (0 0; 0 0); hidden = YES; layer =
 <CALayer: 0x15ea2b10>>

 <_UILayoutGuide: 0x15e86120; frame = (0 1024; 0 0); hidden = YES;
 layer = <CALayer: 0x15e6fc40>>

 <MPVolumeView: 0x15db7840; frame = (18 340; 284 23); alpha = 0; opaque
 = NO; layer = <CALayer: 0x15dbd2e0>>

 <UILabel: 0x15daee40; frame = (0 0; 0 0); text = 'No Volume
 Available'; opaque = NO; autoresize = W+BM; userInteractionEnabled =
 NO; layer = <_UILabelLayer: 0x15dd5be0>>

 <MPButton: 0x15dd5e00; baseClass = UIButton; frame = (131.5 2.5; 21.5
 18); alpha = 0; opaque = NO; autoresize = LM+BM; layer = <CALayer:
 0x15dd6030>>

 <UIImageView: 0x15de0c30; frame = (-39.25 -41; 100 100); alpha = 0;
 opaque = NO; userInteractionEnabled = NO; tag = 1886548836; layer =
 <CALayer: 0x15ea5330>>

 <UIImageView: 0x15ea5790; frame = (0 0; 21.5 18); clipsToBounds = YES;
 opaque = NO; userInteractionEnabled = NO; layer = <CALayer:
 0x15ea5810>>

我正在使用自动布局。请你能帮我解决这个问题。我是自动布局的新手。所以我可以在情节提要中更改的任何内容都可以解决此问题,请告诉我。提前致谢。

【问题讨论】:

如果你的按钮或视图在 UIImageView 上,你必须将 UIImageView 的 UserInteraction 设置为 true。 关闭自动布局,看看会发生什么,如果出现问题,您可以轻松撤消它。 @MichaelMooney :我已经尝试过了,但仍然面临同样的问题。 您是否转到视图控制器并转到“文件检查器”并以这种方式关闭自动布局(单击框),如果您这样做了,您应该尝试@trick14 所说的,setUserInteraction 为 true . 我也试过了。但还是一样。 【参考方案1】:

感谢您的所有回答。我通过将愤怒的代码从 AppDelegate 的 +initialize 方法移动到 didFinishLaunchingWithOptions 方法得到了解决方案。我的 iRate 得到初始化和配置,但不显示弹出窗口。可能这就是为什么我无法在屏幕上进行任何触摸。

【讨论】:

以上是关于UITouch 不适用于 ios8的主要内容,如果未能解决你的问题,请参考以下文章

与 UIGestureRecognizer 一起监听 UITouch 事件

为什么只有一个UIEvent被创建用于许多单独的触摸?

iOS开发UITouch触摸API简介

iOS开发UITouch触摸API简介

swift--触摸(UITouch)事件(点击,移动,抬起)

UITouch