0

たくさんの行を持つ UITableView があります。ユーザーが行をタップすると、カスタム ポップアップ (カスタム UIView) がテーブルの上に表示されます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    PopUp *myPopUp = [[PopUp alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
    [self.view addSubview:myPopUp];
}

ペン先からカスタム UIView ポップアップをロードしています:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self loadNib];
    }
    return self;
}

- (void) loadNib
{
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopUp" owner:self options:nil];
    UIView *mainView = [subviewArray objectAtIndex:0];
    [self addSubview:mainView];
}

ポップアップには、押すとポップアップを閉じるボタンがあります。

- (IBAction)closePopUp:(id)sender
{
    [self removeFromSuperview];
} 

ボタンを押すとポップアップが消えます。ただし、その下にある UITableView は操作できなくなります (つまり、ユーザーはテーブルをスクロールしたり、別の行をタップしたりできなくなります)。ポップアップが消えて、テーブルが完全にインタラクティブになるようにしたいと思います。なぜこれが起こっているのか、どうすれば修正できるのか、誰でも説明できますか? ありがとう!


スクリーンショットで編集

  1. データの行を持つ UITableView: http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#0

  2. 行が選択されると、myPopUp が一番上に表示されます: http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#1

  3. 「x」カスタム ボタンが押されると、closePopUp が呼び出され、スーパービューから myPopUp が削除されます: http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#2

  4. ユーザーは現在、テーブルを操作できません。ユーザーは行を選択したり、テーブルをスクロールしたりできません。

4

2 に答える 2

2

特定のケースで何が起こっているのかわかりませんが、サブビューをに追加すると、UITableViewこのような予期しない動作が発生する可能性があり、一般的には悪い考えです.

何が起こっているのかを修正し、構造をより明確にするために、ポップアップ ビューをテーブル ビューではなくウィンドウに追加することをお勧めします。

[self.view.window addSubview:myPopUp];
于 2013-04-07T22:58:04.243 に答える