1

我希望能够检测到用户何时在我的 UITableView 的最后一行下方点击,但不会对滚动表格的能力产生负面影响。有没有比继承 UITableView 更简单的方法(即覆盖表的 touchesBegan)?

我想这样做的原因是:当表格为空(第一次打开应用程序)或只有几个单元格时,可以点击屏幕上的所有空间来调用 Add 方法。

我尝试在大的 tableview 页脚中使用没有图像(即不可见)的大型自定义 UIButton,但是按下按钮会阻止任何滚动,但是一旦已经有几个单元格,您就想要滚动。我想一旦表格中的项目超过零,我就可以从页脚中删除按钮,但是当表格中已经有一些项目时,这对我没有任何作用。

感谢您的任何想法!

4

2 回答 2

8

在 tableView 的页脚上设置的点击手势识别器为我做了这个伎俩。正如宣传的那样,它检测到点击,但通过其他手势(如滚动)到 UITableView 就好了。

//In viewDidLoad 
//configure footerView with gesture recognizer
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
                                            initWithTarget:self action:@selector(handleSingleTapOnFooter:)];
singleTap.numberOfTapsRequired = 1;
[self.footerView addGestureRecognizer:singleTap];
[singleTap release];
self.tableView.tableFooterView = self.footerView;

//Later on, implement the corresponding method
- (IBAction) handleSingleTapOnFooter: (UIGestureRecognizer *) sender {
    NSLog(@"The footer was tapped!");
    // code to add an entry to the table here
}

footerView 是我在视图控制器的 nib 文件中创建的 UIView,并附加到视图控制器中的 UIView 插座。

我想一个更好的解决方案是在 UITableView 本身上设置一个点击手势识别器,使用代码来识别点击的位置是否在最后一个单元格之后。如果我有时间尝试,我会更新。

于 2011-05-31T19:38:07.430 回答
0

添加一个UINavigationBaras怎么tableHeaderViewTableView?栏右侧的按钮可能是 NEW 按钮。

UIBarButtonItem *newButton = [[UIBarButtonItem alloc] initWithTitle:@"NEW" style:UIBarButtonItemStyleDone target:self action:@selector(newEntry)];
UINavigationItem *navi = [[UINavigationItem alloc] init];
navi.title = @"my table title";
[navi setRightBarButtonItem:newButton];
UINavigationBar *bar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, widthOfMyTableview, heightOfRow)];
[bar setItems:[NSArray arrayWithObject:navi]];

...

myTableView.tableHeaderView = bar;
[newButton release];
[navi release];
[bar release];
于 2011-05-24T16:15:04.717 回答