Iphone 通过触摸内部激活uitableview
我已禁用我的tableviewIphone 通过触摸内部激活uitableview,iphone,objective-c,Iphone,Objective C,我已禁用我的tableview [self.tableView setScrollEnabled:NO]; [self.tableView setAllowsSelection:NO]; 我想单击表中的任意位置以重新激活表。 我可以这样做吗?您可以使用UIAPTgestureRecognizer。您可以使用一个UIAPTgestureRecognizer(非常简单,到处都有教程)或一个UIView子类(放在表视图的顶部),只要触摸它,它就会从视图层次结构中删除自己(在触摸开始:withEve
[self.tableView setScrollEnabled:NO];
[self.tableView setAllowsSelection:NO];
我想单击表中的任意位置以重新激活表。
我可以这样做吗?您可以使用UIAPTgestureRecognizer。您可以使用一个
UIAPTgestureRecognizer
(非常简单,到处都有教程)或一个UIView
子类(放在表视图的顶部),只要触摸它,它就会从视图层次结构中删除自己(在触摸开始:withEvent:
或触摸结束:withEvent:
)。如果您的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
}
}
为了做到这一点,您必须确保self是第一响应者,您可以通过包括
- (BOOL)canBecomeFirstResponder {
return YES;
}
在视图控制器和调用
[self becomeFirstResponder];
如前所述,您可以使用:
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];
}
}
}
}
(未测试)
希望这有帮助