如何在iOS中向superview发送触摸事件?

Sha*_* BS 3 uiview uiresponder ios uievent

我正在做一个iPad应用程序.如何将触摸事件发送到其超级视图?

我正在添加一个始终是其他活动的视图.在那我我将scrollview添加到屏幕的一半,在另一半我添加另一个视图.一切正常,现在我想添加一个按钮和一个小的描述视图,当按钮被点击时会出现,再次点击按钮时会再次消失.为了实现这一点,我采用了一个覆盖整个视图并使其背景颜色清晰的视图.我将此按钮和描述视图放在此视图中,但由于透明视图,它不会滚动.

我想让这个透明视图忽略它的事件.

可以这样做吗?

The*_*ter 20

将视图的userInteractionEnabled属性设置为NO.这样可以让所有人触摸到它后面的视图.

您可以在属性检查器的界面构建器/故事板中或代码中进行设置:

yourView.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

当你有一个带有按钮的透明视图时:

创建该视图的子类并覆盖该pointInside方法.我这样做的方法是将按钮的框架作为属性给予子类,以便在pointInside方法中检查:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    BOOL pointInside = NO;
    // Check if the touch is in the button's frame
    if (CGRectContainsPoint(_buttonFrame, point)) pointInside = YES;

    return pointInside;
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!