私にはGameViewController
クラスとGameBoardView
クラスがあります。
では、クラスからn X m 個のGameViewController
オブジェクトを作成します。これは GameBoard に適合します。このオブジェクトは画面に描画されます (そして実際に塗りつぶされます) 。CSquare
[self.view addSubview: square]
GameViewController
のGameBoardView
デリゲートです。内部でメソッドGameBoardView
を実装しました。ここでは、「制御」が に戻されるようtouchesEnded
に、デリゲート (つまり ) に送信されるメッセージがあります。だから私はから「タッチ」をキャプチャし、そこにあるメソッドを処理するためにそれらを送信します。GameViewController
GameViewController
GameBoardView
GameViewController
問題は、ストーリーボードから という名前の を作成したときに発生しまし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 関連の行を削除すると、すべてが正常に機能しました。
コメントありがとうございます。