我,
在我的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];
}
}发布于 2012-07-11 04:08:46
您每次都在重新创建表视图,无论是否将其添加到屏幕上,您都需要在一个属性或一个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];
}
}有关属性的更多信息,请查看this,希望它能提供帮助。丹尼尔
发布于 2012-07-11 04:19:39
if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
[tableView removeFromSuperview];
}由于您正在添加一个表视图,因此应该将其删除。否则,添加longPressGestureRecognizer方法的表视图,并根据需要隐藏/取消隐藏
https://stackoverflow.com/questions/11421025
复制相似问题