0

ビューコントローラーのプロパティとして保存された多数のポップアップビューがあります。これらは、表示されているときにのみビューに追加され、非表示になっているときにビューから削除されます。すべてが機能していましたが、コードを変更して単純化したところ、機能しなくなりました。

ジェスチャ認識エンジンを作成して追加する方法の例を次に示します。

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePopUpView:)];
[self.totalPowerPopUpView addGestureRecognizer:tapGestureRecognizer];
[self.co2PopUpView addGestureRecognizer:tapGestureRecognizer];

ビューは、UIButton を押すことによってトリガーされるセレクターによって表示されます (通常、カスタム ビュー プロパティを設定する if ステートメントには他のコードがありますが、簡単にするために省略しています)。

- (void)showPopUpView:(UIButton*)sender
{
    CGRect endFrame = CGRectMake(10, 10, 300, 400);
    UIView *popUpView;

    if (sender == self.totalPowerInfoButton)
    {
        [self.view addSubview:self.totalPowerPopUpView];
        popUpView = self.totalPowerPopUpView;
    }
    if (sender == self.co2LevelInfoButton)
    {
        [self.view addSubview:self.co2PopUpView];
        popUpView = self.co2PopUpView;
    }

    [UIView animateWithDuration:0.5
                     animations:^ {
                         popUpView.alpha = 1.0;
                         popUpView.frame = endFrame;
                     }];
}

popUpView は存在しますが、タップしてもジェスチャ認識セレクターが呼び出されません。なぜだめですか?

4

2 に答える 2

4

これは機能しますか:

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc]     initWithTarget:self action:@selector(hidePopUpView:)];
[self.totalPowerPopUpView addGestureRecognizer:tapGestureRecognizer];

tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hidePopUpView:)];
[self.co2PopUpView addGestureRecognizer:tapGestureRecognizer];
于 2012-12-12T02:31:35.530 に答える
1

UIGestureRecognizerを追加するUIViewがにUserInteractionEnabled設定されていることを再確認してくださいYES。すなわち

[self.imageView setUserInteractionEnabled:YES];

于 2013-03-08T08:27:34.717 に答える