0

私にはGameViewControllerクラスとGameBoardViewクラスがあります。

では、クラスからn X m 個のGameViewControllerオブジェクトを作成します。これは GameBoard に適合します。このオブジェクトは画面に描画されます (そして実際に塗りつぶされます) 。CSquare[self.view addSubview: square]

GameViewControllerGameBoardViewデリゲートです。内部でメソッドGameBoardViewを実装しました。ここでは、「制御」が に戻されるようtouchesEndedに、デリゲート (つまり ) に送信されるメッセージがあります。だから私はから「タッチ」をキャプチャし、そこにあるメソッドを処理するためにそれらを送信します。GameViewControllerGameViewControllerGameBoardViewGameViewController

問題は、ストーリーボードから という名前の を作成したときに発生しましUIButtonsettingsButtonsettingsButtonこれを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 関連の行を削除すると、すべてが正常に機能しました。

コメントありがとうございます。

4

0 に答える 0