我在基于Nib的视图中有一个按钮,它的行为不像按钮(从不调用目标方法)。我试图动态添加按钮,但它没有帮助。
我将尝试描述应用程序结构(因为我怀疑它可能导致此问题)并且我可能没有使用正确的设计模式。
查看 A 与Controller AC 相关联。 (从根控制器中的笔尖加载并推送到导航控制器。)
视图A嵌入了多个子视图。让我们调用其中一个A'。
在AC :: viewDidLoad方法中:
我将3个viewControllers a,b,c 加载到AC的成员变量中。
根据应用程序设置,我添加其中一个控制器的视图作为A'的子视图
基本上在AC :: viewDidLoad方法中:
[A' addSubView:(a.view)];
现在a.view有一个按钮(标记)。我搜索该标签。并动态添加目标方法。此时,a.view显示为A'的子视图,按钮也可见。大。
但触摸互动不会发生或触摸操作被我的方法以外的人消耗。
我尝试了很多变化,但执行从未达到我的方法。我甚至尝试将目标添加到所有touchUpEvents。没有。我检查了启用事件中的控件值,这是正确的。该按钮以某种方式被禁用。 我用一个视图写了一个简单的应用程序并做了同样的工作。所以我认为这与我将多个部分放在一起的方式有关。
任何想法?
我希望我有类似Spy ++的东西,我可以看到消息Queue,看看谁在使用这些消息而不是我的应用程序,甚至看看类对象。我是这个平台的新手。 My earlier struggle with this is on this thread.
答案 0 :(得分:5)
只需启用UIImageView的userInteraction ...不要一直疯狂!
view.userInteractionEnabled = YES;
答案 1 :(得分:4)
终于解决了!!!并学到了一些回报。我花了几天时间来解决这个问题。
我的UIButton对象无法正常工作的原因是因为我发现在UIIMageView对象的情况下:
“initWithImage:此方法调整接收器的帧以匹配指定图像的大小。它还默认禁用图像视图的用户交互。”
AND 我的UIButton已被指定为nib文件中UIImageView控件的子视图 !!!
没有错误/警告。它只是安静地被禁用了。
解决方案:创建了一个容器UIView对象,该对象现在包含UIImageView和按钮,以便按钮在图像上显示为叠加,但它实际上是图像的兄弟和虚拟的子视图容器UIView。
答案 2 :(得分:1)
快速'完整性检查'...当您指定目标/选择器时,按钮变量是否为零?
当您按下按钮时,按钮是否显示按下,没有任何反应......或按钮是否从未按下按钮?