【问题标题】:iPhone SDK 2: UIButton not working in nested views loaded from nib fileiPhone SDK 2:UIButton 在从 nib 文件加载的嵌套视图中不起作用
【发布时间】:2009-06-05 19:22:14
【问题描述】:

我在基于 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++ 的东西,在那里我可以看到消息队列并查看谁在使用这些消息而不是我的应用程序,甚至查看类对象。我是这个平台的新手。 My earlier struggle with this is on this thread.

【问题讨论】:

    标签: iphone uiviewcontroller uibutton


    【解决方案1】:

    只需启用 UIImageView 的 userInteraction...不要经历那些疯狂的事情!!!

    view.userInteractionEnabled = YES;

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        当您按下按钮时,它是否看起来像是按下了,但没有任何反应......或者按钮甚至从未按下过?

        【讨论】:

        • 是的,按钮变量没问题。也没有编译警告/错误。按钮没有按下。实际上,我向所有不同的状态添加了不同的 png 来检查这一点。它似乎根本不接受它们。
        • 这非常类似于我在将 UIButton 添加到自定义表格部分标题时遇到的问题。问题原来是我的目标/选择器有问题。如果我没记错的话,我没有在我的 .h 文件中正确声明我的选择器。我会非常仔细地检查目标/选择器并确保一切正确.. iphonedevsdk.com/forum/iphone-sdk-development-iphone-os-3-0/…
        • 方法声明如下 - -(void)doAidViewStick:(id)Sender;实际上,如果我在我的小测试应用程序中错误地声明它,它就会崩溃。我还尝试将它与笔尖中的 IBAction 连接起来。由于某种原因,它只是保持禁用状态。 -(IBAction)doSwitchTohelp;扯掉我的头发! :-(
        • @Dutchie432 我遇到了类似的问题,但我的按钮确实“按下”但从不调用链接到按钮的 IBAction。你对此有什么想法吗?我正在从 xib 加载“弹出”视图控制器,因此弹出窗口位于我的初始视图控制器上
        猜你喜欢
        • 1970-01-01
        • 2010-10-23
        • 2011-05-05
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 2011-09-06
        • 1970-01-01
        • 2011-09-29
        相关资源
        最近更新 更多