将触摸事件传递到所有子视图的最佳方式是什么?
ViewController ->视图-> (subview1,subview2)
我希望subview1和subview2都能响应触摸事件。
发布于 2012-11-28 11:28:28
将子视图上的标签设置为明显的标签。然后在视图中进行树搜索,查找这些标记。不幸的是,在没有子类化的情况下,没有一种很好的方法可以做到这一点。如果你愿意子类化,那么你可以子类化view,然后在触摸时抛出一个NSNotification,这个子类的所有其他视图都会监听。
发布于 2012-11-28 11:29:01
在父级的触摸处理程序中,您可以遍历该视图的子视图并调用相同的处理程序:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for(UIView *subview in [self.view subviews]) {
[subview touchesBegan:touches withEvent:event];
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for(UIView *subview in [self.view subviews]) {
[subview touchesMoved:touches withEvent:event];
}
}或者,如果您需要标识特定的子视图,您可以将整数标记分配给子视图,以便稍后标识它们:
- (void)loadView {
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(10,10,10,10)];
view1.tag = 100;
[self.view addSubview:view1];
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(20,20,20,20)];
view2.tag = 200;
[self.view addSubview:view2];
}然后在由触摸事件调用的ViewController方法中
- (void)touchEventResponder {
UIView *view1 = [self.view viewWithTag:100];
// Do work with view1
UIView *view2 = [self.view viewWithTag:200];
// Do work with view2
}https://stackoverflow.com/questions/13596875
复制相似问题