Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 通过触摸内部激活uitableview_Iphone_Objective C - Fatal编程技术网

Iphone 通过触摸内部激活uitableview

Iphone 通过触摸内部激活uitableview,iphone,objective-c,Iphone,Objective C,我已禁用我的tableview [self.tableView setScrollEnabled:NO]; [self.tableView setAllowsSelection:NO]; 我想单击表中的任意位置以重新激活表。 我可以这样做吗?您可以使用UIAPTgestureRecognizer。您可以使用一个UIAPTgestureRecognizer(非常简单,到处都有教程)或一个UIView子类(放在表视图的顶部),只要触摸它,它就会从视图层次结构中删除自己(在触摸开始:withEve

我已禁用我的tableview

[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];
            }
        }
    }
}
(未测试) 希望这有帮助