我,
在我的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];
}
}
答案 0 :(得分:2)
您每次都在重新创建表格视图,无论是否将其添加到屏幕上,您需要在属性或ivar中捕获您的tableview,然后从那里开始,我假设您只想要一个表视图,以下将解决问题
在你的界面中有一个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];
}
}
有关属性的更多信息,请检查this 希望能帮助到你.. 丹尼尔
答案 1 :(得分:0)
if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
[tableView removeFromSuperview];
}
因为您要添加一个tableview,所以应该删除它。否则,将tableview添加到你的longPressGestureRecognizer方法中,并根据需要隐藏/取消隐藏