0

我正在开发一个应用程序,它实际上像 MSPaint 一样工作(画线的东西,等等......)。我有一个白色的 UIView,基本上是用户绘制的地方。在这个 UIView 之上,我设置了一个 UIImage,它是灰色的,alpha 为 0,4。我希望将此 UIImage 用作吸墨纸。这个想法是当用户将手掌放在该区域时禁用触摸,因此绘图更舒适(禁用多点触控,并且使用这种“吸墨纸”,您不会用手掌意外绘制东西...... )

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

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

任何帮助/指示/想法将不胜感激!谢谢 :-)

4

5 回答 5

4

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

于 2012-04-27T12:37:14.380 回答
4

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

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

于 2012-04-27T13:04:58.240 回答
2

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

编辑:

或者你可能会偷偷摸摸,只是在它上面添加一个空视图。使用相同的帧大小,使其完美重叠,仅此而已。您将能够看到您需要的所有内容,并且它不是它的子视图,因此不会有任何交互,并且触摸将被注册但不会产生任何效果。:P

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

于 2012-04-27T13:03:51.897 回答
1

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

我有 3 个不同的课程:

  • StrokesViewController(UIViewController)——视图控制器

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

  • BlottingPaper (UIView) - 吸墨纸。

我得到了一个与所有三个“链接”的 XIB 文件。

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

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

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

于 2012-04-30T09:18:45.903 回答
0

除了 Dancreek 的响应之外,您还应该进行设置buvard.userInteractionEnabled = YES;以使其捕获交互。

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

当您删除 buvard 时,您应该进行设置buvard.exclusiveTouch = NO;,以便其他视图将重新获得接收触摸的能力。

于 2012-04-27T15:44:49.700 回答