我已通过
禁用了我的tableview[self.tableView setScrollEnabled:NO];
[self.tableView setAllowsSelection:NO];
我想点击表格中的任意位置重新激活表格。 我能这样做吗?
答案 0 :(得分:3)
您可以使用上述UITapGestureRecognizer:
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showTable:)];
[tapGesture setNumberOfTapsRequired:1];
[self.tableView addGestureRecognizer: tapGesture];
[tapGesture release];
和行动
-(void) showTable:(UITapGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateEnded) {
UIView *table=recognizer.view;
if ([table isKindOfClass: [UITableView class]]) {
UITableView *tab=(UITableView *)table;
if (![tab isScrollEnabled]) {
[tab setScrollEnabled:YES];
[tab setAllowsSelection:YES];
}
}
}
}
(未经测试) 希望这会有所帮助。
答案 1 :(得分:1)
您可以使用UITapGestureRecognizer
(非常简单,各处都有教程)或UIView
子类(放在表格视图之上),只要您将自己从视图层次结构中移除触摸它(touchesBegan:withEvent:
或touchesEnded:withEvent:
)。
答案 2 :(得分:1)
如果你的UITableView全屏,那么:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//make UITableView active here
}
如果不是,您应该执行以下操作:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
if(CGRectContainsPoint(yourTableView.frame, touch)) {
//make UITableView active here
}
}
为了做到这一点,你必须确保自己是第一个响应者,你可以通过包括
来做到这一点。- (BOOL)canBecomeFirstResponder {
return YES;
}
在你的视图控制器和某个地方调用
[self becomeFirstResponder];
答案 3 :(得分:0)
您可以使用UITapGestureRecognizer。