【问题标题】:UIButton not receiving touches when added to subview, but does when added to main viewUIButton在添加到子视图时没有收到触摸,但在添加到主视图时会收到
【发布时间】:2012-07-05 13:34:40
【问题描述】:

基本上我有一个主屏幕,屏幕底部有一个背景图像和三个菜单选项。当我将这 4 个组件添加到 RootViewController 的视图中时,一切正常。但是如果我执行类似的操作

_mainContainer = [[UIView alloc] init];
self.view = _mainContainer;
_firstScreen = [[UIView alloc] initWithFrame:self.view.frame];

"some code here setting up the subviews"

[buttonLeft addTarget:self action:@selector(startGame) forControlEvents:UIControlEventTouchUpInside];

[_firstScreen addSubview:mainMenuBackground];
[_firstScreen addSubview:buttonLeft];

[_firstScreen addSubview:buttonMid];
[_firstScreen addSubview:buttonRight];
[_mainContainer addSubview:_firstScreen];

基本上,如果我将所有内容直接添加到 _mainContainer,按钮就可以工作,如果我将它添加到 _firstScreen,然后添加 _firstScreen,它们就不起作用。

在 _firstScreen 上启用了用户交互。我稍后在我的应用程序中做了类似的事情,它工作正常。另外,不确定这是否与它有关,但是尽管我的屏幕以横向显示,并且 plist 中的所有选项都设置为仅横向,但当我运行转换时,例如 FlipFromBottom(或其他任何名称),我的应用程序认为“底部”是屏幕处于纵向状态,直到我移动到应用程序中的另一组子视图。 (所以基本上标题屏幕表现得很糟糕)。

我到处寻找解决方案,希望我没有遗漏一些基本的东西。

【问题讨论】:

    标签: objective-c ios uiview uiviewcontroller uibutton


    【解决方案1】:

    什么是mainMenuBackground?,如果是图片,则不需要将其设置为子视图,正确的方法是将其设置为背景图片。我希望这能解决你的问题

    【讨论】:

    • 为了简单起见,我只是将其注释掉。所以现在我要做的就是将三个按钮添加到一个子视图中,然后将该子视图添加到 rootViewController 的视图中,并且这些按钮仍然不起作用。
    • 我已经修好了。感谢 Ranjit,虽然它与问题无关,但它确实帮助我解决了问题。我回去编辑我的代码来设置我的 UIView _firstScreen 的背景,但没有出现。所以我意识到 _firstScreen = [[UIView alloc] initWithFrame:self.view.frame];实际上并没有设置帧大小。它仍然是0乘0;我不完全确定为什么会这样,因为 _mainContainer 的行为就像它的帧大小与屏幕大小相等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2021-12-07
    • 2011-05-03
    相关资源
    最近更新 更多