Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法在一个视图中点击UI按钮_Ios_Objective C_Uibutton - Fatal编程技术网

Ios 无法在一个视图中点击UI按钮

Ios 无法在一个视图中点击UI按钮,ios,objective-c,uibutton,Ios,Objective C,Uibutton,在我的应用程序中,我有很多视图和视图控制器(大约15个)。第一个视图是我的“主菜单”视图,上面有6个按钮。按钮(单人、多人、排行榜、设置、恢复购买和删除广告)在UIButton类下设置,链接到带有outlets的my.h文件中,然后在我的视图中引用,如下所示。问题是按钮不能在99%的时间被点击(而其他视图控制器中的按钮都可以被点击) 在我将它们重新排列到当前配置(这意味着在界面生成器/代码中调整大小、移动和更改颜色)之前,它们工作得非常好,但现在每次我启动应用程序时,它们要么根本不接受任何输入,

在我的应用程序中,我有很多视图和视图控制器(大约15个)。第一个视图是我的“主菜单”视图,上面有6个按钮。按钮(单人、多人、排行榜、设置、恢复购买和删除广告)在UIButton类下设置,链接到带有outlets的my.h文件中,然后在我的视图中引用,如下所示。问题是按钮不能在99%的时间被点击(而其他视图控制器中的按钮都可以被点击)

在我将它们重新排列到当前配置(这意味着在界面生成器/代码中调整大小、移动和更改颜色)之前,它们工作得非常好,但现在每次我启动应用程序时,它们要么根本不接受任何输入,拒绝被点击,要么只能在非常特定的点被点击(发生这种情况时,所有按钮都是如此,但如果我离开视图,然后返回视图,则点会发生变化,并且每个按钮的点都不同(但通常是按钮顶部)。我完全不知所措,正如你所知,我在这方面做了大量的尝试和错误。我尝试过清除限制并添加建议,但都不起作用(由于我的背景,我确实需要没有或很少有限制)

代码(viewDidLoad:在MainMenuViewController.m中):

.h的代码:

@interface M2MainMenuViewController : UIViewController <GKGameCenterControllerDelegate> {
IBOutlet UIButton *_settingsButton;
IBOutlet UIButton *_singlePlayerButton;
IBOutlet UIButton *_multiPlayerButton;
IBOutlet UILabel *_targetScore;
IBOutlet UIButton *leaderboardBtn;
IBOutlet UIButton *removeAdBtn;
IBOutlet UIButton *restoreAdBtn;

IBOutlet UIView *_background; }
@interface M2MainMenuViewController:UIViewController{
IBUI出口按钮*_设置按钮;
IBUIButton*singlePlayerButton;
IBUIButton*_多层按钮;
IBUILabel*_targetScore;
IBUIButton*排行榜BTN;
IBUI按钮*移除DBTN;
IBUIButton*restoreAdBtn;
IBUIView*_background;}

很抱歉写了这么长的文章,只是想尽我所能提供所有的细节:)

我知道问题出在哪里了,现在觉得自己很傻。我正在覆盖ViewWillDisplay、ViewWillEnglish和ViewDidDisplay,但未能
[super]
他们,这在我的应用程序中导致了多个错误。愚蠢的我…感谢所有的回复,尤其是@kambala意外地帮助我解决了这个问题!

检查容器视图的框架在按钮中,如果按钮不适合其容器的框架,则即使按钮可见且未被切断,也不会收到触摸事件(即superview不切断子视图)。可能是这导致了您的问题。很抱歉,按钮的容器视图是什么意思?就像它们封装在其中的视图一样?按钮superview是否启用了userInteractionEnabled?是的@AlexReynoldsma可以用一些截获触摸的“清晰”视图覆盖按钮?您可以尝试调用
[self.view hitTest:\u settings button.center with event:nil]
-视图中显示:
并查看它是否返回
\u settings button
。如果没有返回,则说明按钮被覆盖。
@interface M2MainMenuViewController : UIViewController <GKGameCenterControllerDelegate> {
IBOutlet UIButton *_settingsButton;
IBOutlet UIButton *_singlePlayerButton;
IBOutlet UIButton *_multiPlayerButton;
IBOutlet UILabel *_targetScore;
IBOutlet UIButton *leaderboardBtn;
IBOutlet UIButton *removeAdBtn;
IBOutlet UIButton *restoreAdBtn;

IBOutlet UIView *_background; }