如何让触摸事件通过UIView(类似于指针事件:CSS中的无)?

ale*_*son 4 objective-c uikit uiview ios

在CSS中,pointer-events:none;允许单击事件通过元素.我很好奇我是否可以在iOS上UIView的Objective-C中做类似的事情.

这是一个指针事件示例的例子:无.

我可以以某种方式 UIView 通过覆盖 实现相同的行为hitTest:withEvent:吗?或者也许有另一种方法可以做到这一点?

谢谢你的帮助.

too*_*ser 12

这是一个方便的实现,符合您最初的直觉:

#import "TouchTransparentView.h"

@implementation TouchTransparentView

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

@end
Run Code Online (Sandbox Code Playgroud)

Swift版本,带有@IB升级版

import UIKit

@IBDesignable
class PassthroughTouchView: UIView {

    @IBInspectable var passthroughTouchEvents : Bool = false

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let hitView = super.hitTest(point, with: event)
        if hitView == self && passthroughTouchEvents == true {
            return nil;
        } else {
            return hitView;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将IB中的视图类设置为我们的 切换现在可在IB中访问