我有GameViewController
班和GameBoardView
班。
在GameViewController
中,我从班级CSquare
创建 n X m 个对象。这将符合GameBoard。这个对象在屏幕上绘制(并实际填充),因为对于每个正方形我都[self.view addSubview: square]
。
GameViewController
是GameBoardView
的代表。在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相关的行使一切正常。
感谢大家的评论。