1

私、

私の handleLongPress 関数 (参照: ジェスチャ レコグナイザー) で、TableView を表示しようとし、最後にジェスチャが削除されると消えます。そのために、tableView の setHidden 関数と共にジェスチャ認識エンジンの状態プロパティを使用します。残念ながら、表示された後のtableViewは消えません。理由がわかりません。アイデアがあれば、よろしくお願いします。

これが私のコードです:

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
    UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(gestureRecognizer.view.center.x - 10, gestureRecognizer.view.center.y - 10, 100, 100)];

    tableView.layer.cornerRadius = 20.0;
    tableView.layer.frame = CGRectInset(tableView.layer.frame, 20, 20);


    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
    [self addSubview:tableView];
    }

    if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
    {
        [tableView setHidden:YES];
    }
}
4

2 に答える 2

2

テーブルビューを毎回再作成し、それを画面に追加するかどうかに関係なく、テーブルビューをプロパティまたは ivar にキャプチャする必要があります。次に、テーブルビューが 1 つだけ必要であると仮定して、次の手順で問題を修正します。

インターフェイスには tableView プロパティがあります

@interface ..
{

}
@property(nonatomic, retain) UITableView *tableView;
@end

これを実装で合成します...

    -(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
    {
       if(tableView==nil)
      {
        self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(gestureRecognizer.view.center.x - 10, gestureRecognizer.view.center.y - 10, 100, 100)] autorelease];
      [self addSubview:self.tableView];
     }

        self.tableView.layer.cornerRadius = 20.0;
        self.tableView.layer.frame = CGRectInset(tableView.layer.frame, 20, 20);


        if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
           [self.tableView setHidden:false];
        }

        if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
        {
            [self.tableView setHidden:YES];
        }
   }

プロパティの詳細については、これが役に立てば幸いです.. Daniel

于 2012-07-10T20:08:46.100 に答える
0
if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
    [tableView removeFromSuperview];
}

テーブルビューを追加しているので、削除する必要があります。それ以外の場合は、 longPressGestureRecognizer メソッドの外にテーブルビューを追加し、必要に応じて非表示/非表示を解除します

于 2012-07-10T20:19:39.260 に答える