import WebKit import RxSwift import RxCocoa public extension Reactive where Base: WKScriptMessageHandler { func didReceiveMessage() -> Observable<(WKUserContentController, WKScriptMessage)> { return self.methodInvoked(#selector(Base.userContentController)) .map { args in guard args.count == 2, let controller = args[0] as? WKUserContentController, let message = args[1] as? WKScriptMessage else { throw RxCocoaError.castingError(object: args, targetType: (WKUserContentController, WKScriptMessage).self) } return (controller, message) } } }