如何让UIButton检测到它被按下了?

时间:2012-11-07 12:38:17

标签: objective-c uiviewcontroller uibutton

我有GameViewController班和GameBoardView班。

GameViewController中,我从班级CSquare创建 n X m 个对象。这将符合GameBoard。这个对象在屏幕上绘制(并实际填充),因为对于每个正方形我都[self.view addSubview: square]

GameViewControllerGameBoardView的代表。在GameBoardView内部,我实施了touchesEnded方法,此处有一条消息发送给代理人(即GameViewController),以便“控制”转移回GameViewController。所以我从GameBoardView捕获“触摸”并将它们发送到GameViewController,以便处理任何方法。

当我从故事板创建一个名为UIButton的{​​{1}}时出现问题。我希望这个settingsButton位于GameBoard之上,以便始终可以按下它。

但是,即使我在settingsButton中创建了一个插座IBOutlet UIButton *settingsButton和操作(IBAction)settingsButtonPressed:(id)sender,每当我触摸屏幕时,触摸都会被GameViewController“捕获”,并且它永远不会检测到'SettingsButton'已被击中。实际上,动作touchesEnded永远不会被调用。

我尝试了几件事:

  • settingsButtonPressed设置为settingsButton 之后执行[_settingsButton becomeFirstResponder]; 的所有方块,并将其作为子视图添加到GameViewController视图中。没用。
  • 执行[self.view bringSubviewToFront:_settingsButton];

它们都不起作用。对我做错了什么的想法?

更新:我设法让它发挥作用,并意识到我的错误在哪里。

viewDidLoad我无意中创建了两个UIViews:

GameBoardView *View = (GameBoardView*)self.view;
View.delegate = self;
(...)
GameBoardView *GBView = [[GameBoardView alloc] initwithFrame:frame];
[self.view addSubview:GBViwe];

我仍然不明白为什么[self.view bringSubviewToFron:_SettingsButton];无法正常使用上面的代码。但是,删除与GBView相关的行使一切正常。

感谢大家的评论。

0 个答案:

没有答案