0

いくつかのサブビューを含むアプリでモーダル ビューを作成しています。これらのサブビューのそれぞれには、ボタンとそのボタンに関連するアクションがあります。ループを使用して、各サブビューを所定の位置に挿入します。問題は、最初の 4 つのサブビューは問題なく、5 番目から最後まで応答がないことです。

これは、問題に関連する簡略化されたコードです。

簡略化された SubviewView.m

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // More info button
        CGRect buttonFrame = CGRectMake(infoMarginLeft + infoWidthWithInfo, infoHeightControl, 25, 25);
        UIButton * button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [button setFrame:buttonFrame];
        [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:button];
    }
    return self;
}

-(void)buttonTapped:(id)sender
{
    NSLog(@"Button tapped!";
}

簡易ビュー.m

- (void)drawRect:(CGRect)rect
{ 
    for (int i = 0; i < 12; i++) {
        // Color info container
        SubviewView * miniView = [[SubviewView alloc] initWithFrame:CGRectMake(0, 20 * i, 15, 15)];
        miniColorView.backgroundColor = [UIColor clearColor];

        // Adding subview through array to keep track of objects
        [self addSubview:miniColorView];
    }
}

事前に感謝します。何が起こっているのかまったくわかりません:p

--

編集

それが何であるかがわかりました!

親ビューの高さは画面の高さでした。問題は、一部のサブビューが画面の高さの制限を超えていたことです。私がしなければならなかったのは、親ビューの高さを増やすことだけでした =)

4

1 に答える 1

0

ビュー miniView をボタンの上に追加していないことを確認します。

また、これは drawRect の外に移動する必要があります。これを init メソッドに入れるだけです。

編集:

miniView の背景色をクリア以外の色に設定し、ボタンがまだ表示されるかどうかを確認します。そうでない場合は、ボタンを隠しており、タッチ イベントを受け取りません。

于 2013-06-01T19:09:05.607 に答える