当父视图在iOS中将userInteractionEnabled设置为NO时,如何获得触摸

当父视图的userInteractionEnabled = NO时,即使其userInteractionEnabled属性设置为YES,其子视图也不会接受触摸事件。

有什么办法仍然可以在子视图中触摸事件?

要让触摸传递,但让其子视图处理触摸的视图,请让该视图上的userInteractionEnabled为YES,而是使用此片段:

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event { id hitView = [super hitTest:point withEvent:event]; if (hitView == self) return nil; else return hitView; } 

资料来源: http : //cocoaheads.tumblr.com/post/2130871776/ignore-touches-to-uiview-subclass-but-not-to-its

将父视图的userInteractionEnabled属性设置为NO也隐式地将其子视图userInteractionEnabled属性设置为NO。 我不知道如何使用你所描述的方法来获取触摸事件的子视图,但也许你可以创build一个视图,只是覆盖你希望用户与之交互的视图,但不是这些视图的父观点。

解决方法是将button等的用户交互禁用为零,而不是禁用整个父视图的用户交互