我有一个视图控制器,我在其中添加了一些菜单子视图。 比我在这个菜单上有按钮,因此我必须禁用主视图上的触摸,并在子视图菜单上启用它们。
我在子视图类(UIView
子类)中尝试过这种方法:
self.superview.userInteractionEnabled=NO;
self.userInteractionEnabled=YES;
sideMenuBackView.userInteractionEnabled=YES;
按钮添加到sideMenuBackView
的位置,并且在点击时不会触发。
如何启用子视图类中的按钮。
编辑:
我看到了这个:
-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
id hitView = [super hitTest:point withEvent:event];
if (hitView == self) return nil;
else return hitView;
}
我并没有真正帮助,因为如果我将它放在父视图中,它将永久禁用触摸,而不是暂时的。我需要的是临时启用触摸子视图中的按钮,并禁用其父视图中的触摸。比菜单关闭时,再次启用父
答案 0 :(得分:0)
制作像View * myview这样的对象;
如果你想隐藏
self.myview.hidden = YES;
答案 1 :(得分:0)
捕获超级视图中的所有触摸事件,然后使用UITouch -locationInView
确定触摸所在的子视图。忽略您想要激活的子视图中的任何触摸。将所需子视图中的触摸传递到子视图以处理它们。
e.g:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
if ([self.subView1 pointInside:[touch locationInView:self.subView1] withEvent:nil])
{
// User touched inside the subview - pass the event on to that subview to handle it
[self.subView1 touchesBegan:touches withEvent:event];
}
else
{
// User touched a different subview or in the main (superview) - ignore the touch
}
}
在-touchesMoved
和-touchesEnded
中执行相同操作。
答案 2 :(得分:0)
对我的观点进行子类化并实现此目的:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
return CGRectContainsPoint(self.button.frame, point);
}
将允许按钮触摸,但阻止所有其他触摸。