1

我,

在我的 handleLongPress 函数(cf:手势识别器)中,我尝试让 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 中捕获您的表格视图,然后从那里开始,我假设您只想要一个表格视图,以下将解决问题

在您的界面中有一个 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];
        }
   }

有关属性的更多信息,请查看内容,希望对您有所帮助.. 丹尼尔

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

因为您要添加一个表格视图,所以您应该删除它。否则,将 tableview 添加到 longPressGestureRecognizer 方法之外,并根据需要隐藏/取消隐藏

于 2012-07-10T20:19:39.260 回答