如何在UIImage上禁用触摸检测?

时间:2012-04-27 12:31:11

标签: objective-c ios uiview uiimage touch

我正在开发一个应用程序,它实际上就像MSPaint(画线等等)。 我有一个白色的UIView,基本上是用户绘制的地方。在这个UIView的顶部,我设置了一个灰色的UIImage,带有0.4 alpha。我希望这个UIImage可以用作吸墨纸。当用户将手掌放在这个区域时,想法是禁用触摸,因此绘制起来更舒服(多点触控已禁用,使用此“吸墨纸”,您不会意外地用手掌画出一些东西...... )

即使我将UIImage放在视图顶部的前面,即使我在这个UIImage上禁用用户交互,仍然可以在UIView上绘制。在UIImage背后(有点奇怪!)

我不明白发生了什么,因为,似乎图像是透明的,并且UIView“后面”仍然是活跃的,即使她被UIImage覆盖了?!

非常感谢任何帮助/指示/想法!谢谢: - )

5 个答案:

答案 0 :(得分:4)

您是否已将UIImage的“userInteractionEnabled”属性设置为“NO”?

答案 1 :(得分:4)

你可能真的想做相反的事情。当您禁用用户交互或触摸时,视图基本上对触摸不可见,并将它们传递到下一个视图。

在您的情况下,您确实需要userInteractionEnabled,因为您希望视图捕获这些触摸。

答案 2 :(得分:2)

你必须在UIImageView上禁用用户交互而不是UIImage,它应该可以工作。

编辑:

或者你可能偷偷摸摸地只是在它上面添加一个空视图。使用相同的框架大小,使其完美重叠,就是这样。你将能够看到你需要的一切,它不是它的子视图所以不会有任何互动和触摸会被注册,但不会有任何影响。 :P

除非你发布一些代码,否则没有更好的想法......

答案 3 :(得分:1)

好的,所以我设法做了我想做的事! YAY!

我有3个不同的课程:

  • StrokesViewController(UIViewController) - 视图控制器

  • StrokesView(UIView) - 用户绘制笔划的视图。

  • BlottingPaper(UIView) - 吸墨纸。

我将XIB文件“链接”到这三个文件。

我创建了这个名为“BlottingPaper”的新类,输入了UIView。 .h和.m文件实际上是空的(我输入#import< Foundation / Foundation.h>) 在BlottingPaper上启用用户交互。 我不会在这堂课上使用独家触摸。

在XIB文件中,我只是在StrokesView上放置一个视图。我将它链接到BlottingPaper(根据我的意愿修改alpha,blablabla ......)

就是这样!当我把手掌放在它上面时,它在我的手所在的区域上没有画任何东西,但我仍然可以用手指在StrokesView的其余部分画画!

答案 4 :(得分:0)

除了Dancreek的回复之外,您应该设置buvard.userInteractionEnabled = YES;以便捕获互动。

您还应该设置buvard.exclusiveTouch = YES;,以便buvard是唯一可以接收触摸事件的视图。

当你移除buvard时,你应该设置buvard.exclusiveTouch = NO;,以便其他视图能够重新获得接触的能力。