0

UIButton のアクションに少し問題があります。プログラムで 4 つのボタンを作成していますが、TouchUpInside イベントを発生させることができません。

私はSOを読みましたが、まだ問題があるので、どんなポインタでも大歓迎です!

ボタンとそのアクションを作成して設定するコードは次のとおりです。

UIButton *btn;

float newWidth = 10;

for (int i = 0; i < _btnImages.count; ++i) {
    btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    CGRect imageFrame = CGRectMake(/*X*/newWidth, /*Y*/height - 80, 65, 65);
    btn.frame = imageFrame;
    btn.tag = i;

    [btn setBackgroundImage:[UIImage imageNamed:[_btnImages objectAtIndex:i]] forState:UIControlStateNormal];
    [btn addTarget:self
            action:@selector(btnSelected:)
            forControlEvents:UIControlEventTouchUpInside];
    [btn setEnabled:true];

    [self addSubview:btn];
    newWidth = newWidth + 75;
}

ここに btnSelected メソッドがあります:

-(void)btnSelected:(UIButton *)button
{
    NSLog(@"Button %ld Clicked",(long int)[button tag]);
} 
4

2 に答える 2

7

あなたが示したコードは大丈夫です。考えられる問題は次のとおりです。

  1. ユーザー操作が無効になっている (またはその先祖のいずれかでユーザー操作が無効になっている) ビューにボタンを追加しようとしています。

  2. あなたのボタンはスーパービューによってクリップされます。ボタンがスーパービューの境界内にあることを確認してください (スーパービューがそのスーパービューの境界内にあるなど)。

  3. ビューにジェスチャ レコグナイザーがある場合、他の問題が発生する可能性があります。ボタンを含むサブビューでのタッチが遅延およびキャンセルされる可能性があります。タッチ イベントがジェスチャ認識エンジンによって処理されないようにしてください。

于 2013-05-09T15:14:23.697 に答える