我显示了一个UITableView,并且有时第一行出现在视图的底部。
第一行上方没有任何内容,空白区域无法触及。
到目前为止,我已经检查过:
此错误仅出现在iPhone上,绝不会出现在模拟器上。
屏幕截图左侧显示正确的tableview,右侧显示有bug的视图。在进行快照时,我触摸了屏幕,以便滚动条可见。
我应该在什么方向看看?
我刚看到tableView scrollView的contentSize错误:我有84个单元格@ 67像素和1个单元格@ 57像素高度:总数应该是5685但是6005.(关闭320)。奇怪。
斯蒂芬
alt text http://www.quicksnapper.com/files/5161/18374733084A0B3EA24D152.png
答案 0 :(得分:1)
您可以覆盖UITableView的touchesBegan方法,然后运行命中测试。
然后询问视图返回它是什么类。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint location = [[touches anyObject] locationInView:self];
UIView *whatIsThis = [self hitTest:locationInView withEvent:event];
NSLog([[whatIsThis class] description]);
}
至少你会有一个起点。你也可以问一下它的superView是谁。
答案 1 :(得分:0)
所以我找到了解决问题的方法:
添加NSLog(@“”)。这很奇怪。
在我的viewWillAppear中,我有
if (searchByCuisinier || searchByResto) {
NSLog(@"Will set tableHeaderView");
self.tableView.tableHeaderView = searchBar;
if (searchByCuisinier) {
searchBar.placeholder = @"Cuisinier";
} else {
searchBar.placeholder = @"Restaurant";
}
searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
if ([filteredList count] == 0)
[searchBar becomeFirstResponder];
} else {
self.tableView.tableHeaderView = nil;
NSLog(@""); // Magic!
}
添加NSLog(@“”)解决了这个错误。
同时扭转测试: 而不是
if (searchByCuisinier || searchByResto) {
....
我做:
if (!searchByCuisinier && !searchByResto) {
....
我完全不知道为什么会这样(或者为什么没有NSLog就无法工作)。