对于使用纯JS编写的Nativescript Web应用程序,无法在iOS上禁用缩放功能没有成功。似乎有TypeScript解决方案,但是我无法在JS中实现相同的策略。
(1)类似,但使用纯JS:https://stackoverflow.com/a/48824238/3340040
NativeScript具有子类化Objective-C类和公开方法的方法:https://docs.nativescript.org/core-concepts/ios-runtime/how-to/ObjC-Subclassing#calling-base-methods-Exposed
...似乎可以通过扩展UIViewController
(2):https://stackoverflow.com/a/51229156/3340040
...但是我对委托人的参与方式感到困惑。
我觉得这两种策略都应该起作用,但是对于(1),我不确定如何将所有这些declare var
类转换为TS是免费获得的JS。还有策略(2),我还没做好准备。
那里有NativeScripters吗?
答案 0 :(得分:1)
您只需要从原始代码中删除键入内容,然后全部使用JavaScript。
let WebView = require("tns-core-modules/ui/web-view").WebView;
WebView.prototype.createNativeView = function () {
let jScript = `var meta = document.createElement('meta');
meta.setAttribute('name', 'viewport');
meta.setAttribute('content', 'initial-scale=1.0 maximum-scale=1.0');
document.getElementsByTagName('head')[0].appendChild(meta);`;
const wkUScript = WKUserScript.alloc().initWithSourceInjectionTimeForMainFrameOnly(jScript, WKUserScriptInjectionTime.AtDocumentEnd, true);
const wkUController = WKUserContentController.new();
wkUController.addUserScript(wkUScript);
const configuration = WKWebViewConfiguration.new();
configuration.userContentController = wkUController;
configuration.preferences.setValueForKey(
true,
"allowFileAccessFromFileURLs"
);
return new WKWebView({
frame: CGRectZero,
configuration: configuration
});
};
注意:请记住,要添加平台检查,如果您在Android上运行此iOS特定代码,则该应用将中断。