1

我在基于 Nib 的视图中有一个按钮,它的行为不像按钮(永远不会调用目标方法)。我试图动态添加按钮,但它没有帮助。

我将尝试描述应用程序结构(因为我怀疑它可能会导致此问题)并且我可能没有使用正确的设计模式。

  • 视图A绑定到控制器AC。(从根控制器中的 nib 加载并推送到导航控制器。)

  • 视图 A 嵌入了多个子视图。让我们称其中之一为A'。

  • 在 AC::viewDidLoad 方法中:

    我将 3 个视图控制器a、b、c加载到 AC 的成员变量中。

根据应用程序设置,我将这些控制器之一的视图添加为 A' 的子视图

本质上在 AC::viewDidLoad 方法中:

[A' addSubView:(a.view)];

现在 a.view 有一个按钮(已标记)。我搜索该标记。并向其动态添加目标方法。此时 a.view 显示为 A' 的子视图,并且该按钮也可见。伟大的。

但是触摸交互没有发生,或者触摸动作被我的方法以外的其他人使用。

我尝试了很多变体,但执行从未达到我的方法。我什至尝试将目标添加到所有 touchUpEvents。没有。我检查了启用事件中的控制值,这是正确的。该按钮只是以某种方式被禁用。我用一个视图编写了一个简单的应用程序,并做了同样的事情,它奏效了。所以我认为这与我将多个部分组合在一起的方式有关。

有任何想法吗?

我希望我有像 Spy++ 这样的东西,在那里我可以看到消息队列并查看谁在使用这些消息而不是我的应用程序,甚至查看类对象。我是这个平台的新手。 我之前与此的斗争是在这个线程上。

4

3 回答 3

5

只需启用 UIImageView 的 userInteraction ......不要经历所有的疯狂!

view.userInteractionEnabled = YES;

于 2010-06-15T22:33:57.573 回答
4

终于解决了!!!并学到了一些东西作为回报。我花了几天时间才弄清楚这一点。

我的 UIButton 对象不起作用的原因是因为我发现在 UIIMageView 对象的情况下:

“initWithImage:此方法调整接收器的框架以匹配指定图像的大小。它还默认禁用图像视图的用户交互。”

并且 我的 UIButton 已被分配为 nib 文件中 UIImageView 控件的子视图

没有错误/警告。它只是悄悄地被禁用。

解决方案:创建了一个容器 UIView 对象,该对象现在包含 UIImageView 和按钮,以便按钮显示为覆盖在图像上,但它实际上是图像的兄弟姐妹和虚拟容器 UIView 的子视图。

于 2009-06-14T00:01:11.977 回答
1

快速“健全性检查”......当您分配目标/选择器时,按钮变量是否不为零?

当您按下按钮时,按钮是否似乎被按下,并且没有任何反应......或者按钮甚至从未按下?

于 2009-06-05T19:47:56.657 回答