我们的应用是使用Cordova的混合应用。因此,在webview中完成了很多逻辑。
我遇到了需要访问webview对象的场景。
问题是我无法抓住它!
这是基类CDVPlugin.h
:
@interface UIView (org_apache_cordova_UIView_Extension)
@end
// Stuff
@interface CDVPlugin : NSObject {}
@property (nonatomic, readonly, weak) UIView* webView; // This is what I want
潜入CDVPlugin.m
文件看起来像这样:
@interface CDVPlugin ()
// Other codes
- (UIView*)webView
{
if (self.webViewEngine != nil) {
return self.webViewEngine.engineWebView;
}
return nil;
}
扩展CDVPlugin的Bridge.swift
文件如下所示:
@objc(Bridge) class Bridge:CDVPlugin
{
func getWebView() -> UIWebView
{
self.webView // Does not exist
}
}
我更加困惑,因为其他子类能够访问此webView变量。例如这个插件类:
#import "CDVPlugin.h"
@interface CDVGestureHandler : CDVPlugin
@property (nonatomic, strong) UILongPressGestureRecognizer* lpgr;
@end
能够正常访问私有方法吗?
#import "CDVGestureHandler.h"
@implementation CDVGestureHandler
- (void)pluginInitialize
{
NSArray *views = self.webView.subviews;
}
我不确定为什么其他一些Objc类能够从其父级访问私有方法,或者为什么我无法从扩展它的Swift类访问它。
如果你可以告诉我如何访问这个webView
对象我很满意!
答案 0 :(得分:0)
轻微的derp时刻。
我的班级正在使用全局函数,因此无法访问成员变量。错误消息让我失去了基础。
“实例成员不能在类型Bridge上使用”。
我现在看到它意味着它是类func中的实例访问。我想知道Dark Souls 3的主持人是否写了编译错误。