私にはGameViewControllerクラスとGameBoardViewクラスがあります。
では、クラスからn X m 個のGameViewControllerオブジェクトを作成します。これは GameBoard に適合します。このオブジェクトは画面に描画されます (そして実際に塗りつぶされます) 。CSquare[self.view addSubview: square]
GameViewControllerのGameBoardViewデリゲートです。内部でメソッドGameBoardViewを実装しました。ここでは、「制御」が に戻されるようtouchesEndedに、デリゲート (つまり ) に送信されるメッセージがあります。だから私はから「タッチ」をキャプチャし、そこにあるメソッドを処理するためにそれらを送信します。GameViewControllerGameViewControllerGameBoardViewGameViewController
問題は、ストーリーボードから という名前の を作成したときに発生しましUIButtonたsettingsButton。settingsButtonこれをGameBoardの上に置いて、いつでも押せるようにしたいです。
IBOutlet UIButton *settingsButtonただし、でアウトレットとアクション(IBAction)settingsButtonPressed:(id)senderを作成したにもかかわらずGameViewController、画面に触れるたびにタッチが「キャプチャ」されtouchesEnded、「SettingsButton」が押されたことを検出しません。実際には、アクションsettingsButtonPressedが呼び出されることはありません。
私はいくつかのことを試しました:
- すべての四角形が作成され、サブビューとしてのビューに追加された後
settingsButton、ファーストレスポンダーとして を設定します。うまくいきませんでした。[_settingsButton becomeFirstResponder];GameViewController - してください
[self.view bringSubviewToFront:_settingsButton];。
それらのどれも機能しません。私が間違っていることについて何か考えはありますか?
更新:私はそれを機能させることができ、私の間違いがどこにあるかに気づきました.
で、viewDidLoadうっかり 2 つの UIView を作成してしまいました。
GameBoardView *View = (GameBoardView*)self.view;
View.delegate = self;
(...)
GameBoardView *GBView = [[GameBoardView alloc] initwithFrame:frame];
[self.view addSubview:GBViwe];
[self.view bringSubviewToFron:_SettingsButton];上記のコードで実行が正しく機能しなかった理由はまだわかりません。ただし、GBView 関連の行を削除すると、すべてが正常に機能しました。
コメントありがとうございます。