質問

2つのサブビューを追加するメインビューコントローラーがあります。

- (void)viewDidLoad
{
    [self init];
    [super viewDidLoad];

    //To shrink the view to fit below the status bar.
    self.wantsFullScreenLayout = YES;

    //We start off by displaying the background Images.
    [self displayMenuSceneBackground];

    //Then we show the Menus.
    [self displayMenuSceneMenu];


}

ここでは、メインビューコントローラーにサブビューを追加します。どちらのサブビューも、インターフェイスビルダーを使用して構築されたビューコントローラーです。

-(void) displayMenuSceneBackground{
    //Display the MenuSceneBackground View Controller
    MenuSceneBackground *screen = [[MenuSceneBackground alloc] init];

    [self.view addSubview:screen.view];
    [screen release];
}

-(void) displayMenuSceneMenu{
    //Display the MenuSceneMenu View Controller
    MenuSceneMenu *screen = [[MenuSceneMenu alloc] init];

    [self.view addSubview:screen.view];
    [screen release];
}

どちらのサブビューも正しく表示され、Menuscenebackground View Controllerの一部でさえ正常に動作しますが、これらのサブビューはいずれもタッチイベントを受け取りません。

それらはすべてToucheSbeganを実装しますが、メインビューコントローラーのみがそれらを受け取ります。

Main View Controller UserInteractionをNOにして、Touchesbeganメソッドを実装していませんでしたが、これはタッチを無視するだけです。

どちらのサブビューも画面全体のサイズに表示されます。

私は同様の問題を読みましたが、反応は助けにはなりませんでした。

私はこれをサブビューに持っています

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];

    NSLog(@"testing MenuSceneMenu");
    [self clicked_testing_alert];    //This is a UIAlertView for debugging
    return;
}

事前に助けてくれてありがとう。

役に立ちましたか?

解決

uiviewcontrollerはuiviewと同じではないため、touchesbegan-eventsを受け取っていないことに注意してください。 (ビューではなく、ビューコントローラーにTouchesbeganを追加しました...)。

解決: :Simon Goldeenのおかげで、デモプロジェクトでTouchesbeganが呼ばれることがわかりました。しかし、私の生産プロジェクトでは、そうではありません。これが問題です:( Appleが推奨するように)あなたと私は使用しています - (void)release; メモリの使用量を減らすため。 これにより、ToucheSbeganが呼び出されません。サイモンは使用しません release, 、だから彼の状況では、彼らは呼ばれます。

他のヒント

問題はあなたが電話するときだと確信しています [super touchesBegan:touches withEvent:event];

から uiresponder その方法のドキュメント:

このメソッドのデフォルトの実装は何もしません。ただし、uiresponderの即時のuikitサブクラス、特にuiviewは、メッセージをレスポンダーチェーンに転送します。

したがって、uiviewcontrollerのデフォルトの動作は、レスポンダーチェーンをタッチアップすることです。これはあなたがやりたいことではないので(少なくともすぐにはありません)、あなたはあなたのコードからその行を削除するか、あなたがあなたの現在のビューであなたが必要ないか、あなたがあなたの現在のビューのタッチに応答したいと判断した後にそれを含めるか、それを含めるべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top