iPhone SDK 2:UIButton不能在从nib文件加载的嵌套视图中工作

问题描述:

我在基于Nib的视图中有一个按钮,它的行为不像按钮(目标方法从不调用)。我试图动态添加按钮,但它没有帮助。iPhone SDK 2:UIButton不能在从nib文件加载的嵌套视图中工作

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

  • 查看一个被绑定到控制器AC。 (从根控制器的一个笔尖装载并推送到导航控制器)。

  • 视图A具有嵌入的多个子视图。让我们打电话给那些A'。

  • 在AC :: viewDidLoad方法:

    予加载3个viewControllers A,B,C成交流电的成员变量。

取决于应用程序的设置我添加这些控制器之一的视图的”

基本上在AC :: viewDidLoad方法子视图:

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

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

但触摸交互不会发生或触摸操作被我的方法以外的其他人使用。

我已经尝试了很多变化,但执行永远不会达到我的方法。我甚至尝试将目标添加到所有touchUpEvents。没有。我检查了启用的事件中的控制值,这是正确的。不知怎的,该按钮被禁用。 我写了一个简单的应用程序与一个视图,并做了同样的工作。所以我认为这与我将多件作品放在一起的方式有关。

任何想法?

我希望我有类似Spy ++的东西,我可以看到消息队列,看看谁消费了这些消息,而不是我的应用程序,甚至看看类对象。我是这个平台的新手。 My earlier struggle with this is on this thread.

终于解决了!并学会了一些回报。花了我几天的时间才弄清楚这一点。

的原因,我的UIButton对象没有工作是因为我发现,在一个UIImageView对象的情况下:

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

AND 我的UIButton已被指定为在nib文件中的UIImageView控件的子视图 !!!

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

解决方案:创建一个容器的UIView对象,其现在包含的UIImageView和按钮,从而当叠加在图像,但它实际上是图像的兄弟和虚设容器的UIView的子视图显示的按钮。

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

当您按下按钮时按钮是否按下,并且什么也没有发生......或者按钮从未按下过?

+0

是的,按钮var是可以的。没有编译警告/错误。 该按钮没有按下。我实际上添加了不同的PNG到所有不同的州来检查。它似乎根本不需要它们。 – 2009-06-05 19:52:03

只需启用UIImageView的userInteraction ...不要穿过所有的疯狂!

view.userInteractionEnabled = YES;