如何在 Nativescript 和纯 JS 中禁用 iOS 缩放和双击缩放
How to disable iOS pinch zoom and double tap zoom in Nativescript and plain JS
我在 iOS 上禁用纯 JS 编写的 Nativescript 网络应用程序的缩放失败。似乎有针对此的 TypeScript 解决方案,但我无法在 JS 中实现相同的策略。
(1) 类似这样,但在普通 JS 中:
NativeScript 有一种子类化 Objective-C 类 和公开方法的方法:https://docs.nativescript.org/core-concepts/ios-runtime/how-to/ObjC-Subclassing#calling-base-methods-Exposed
...这似乎可以通过扩展 UIViewController
(2):
...但我对代表的参与方式感到困惑。
我觉得这两种策略中的任何一种都应该有效,但是对于 (1) 我不确定如何将所有这些 declare var
类 转换为 TS 以某种方式免费获得的 JS。还有攻略(2),我不适应。
那里有 NativeScript 开发者吗?
你只需要从原始代码中删除类型,然后它就只是 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
});
};
注意: 记得添加平台检查,如果您 运行 iOS Android 上的特定代码,应用程序将崩溃。
我在 iOS 上禁用纯 JS 编写的 Nativescript 网络应用程序的缩放失败。似乎有针对此的 TypeScript 解决方案,但我无法在 JS 中实现相同的策略。
(1) 类似这样,但在普通 JS 中:
NativeScript 有一种子类化 Objective-C 类 和公开方法的方法:https://docs.nativescript.org/core-concepts/ios-runtime/how-to/ObjC-Subclassing#calling-base-methods-Exposed
...这似乎可以通过扩展 UIViewController
(2):
...但我对代表的参与方式感到困惑。
我觉得这两种策略中的任何一种都应该有效,但是对于 (1) 我不确定如何将所有这些 declare var
类 转换为 TS 以某种方式免费获得的 JS。还有攻略(2),我不适应。
那里有 NativeScript 开发者吗?
你只需要从原始代码中删除类型,然后它就只是 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
});
};
注意: 记得添加平台检查,如果您 运行 iOS Android 上的特定代码,应用程序将崩溃。