在iOS 8中使用WKWebView,如何从本机端运行JavaScript函数或以其他方式从本机端到JavaScript进行通信?似乎没有类似于UIWebView的方法stringByEvaluatingJavaScriptFromString:.
(我可以- addScriptMessageHandler:name:在configuration.userContentController对象上使用以允许从JS到本地的通信,但我正在寻找相反的方向.)
我正在将iOS应用程序表单UIWebView迁移到WKWebView.到目前为止一直这么好......在之前的应用程序中我禁用了长按并实现了自定义长按(自定义处理链接),但是我无法在WKWebView中使用它
我尝试过以下方法:
- (void)webView:(WKWebView *)wkWebView didFinishNavigation:(WKNavigation *)navigation {
[wkWebView evaluateJavaScript:@"document.body.style.webkitTouchCallout='none';" completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)
我已检查并且该行被执行,该呼叫的响应为@"无"
但它响应:警告:尝试显示其视图不在窗口层次结构中!
有任何想法吗? 解决方案:将 javascript注入wkwebview现在可以正常工作!
[self.wkWebView evaluateJavaScript:@"document.body.style.webkitTouchCallout='none';" completionHandler:nil];
Run Code Online (Sandbox Code Playgroud) 我有三个下拉列表(三个<select>元素).我用css称呼它们:
.dropdown{
font-size: 20px;
background: white;
border:none;
position: relative;
}
Run Code Online (Sandbox Code Playgroud)
在铬合金,他们看起来非常好.但是,当我在Safari上测试我的iPhone 6s(ios 10.2.1)上的网站时,结果有点不同,如图所示:

正如你所看到的那样gradient,background箭头中和箭头附近background都是black.
我如何设计
<select>元素的样式,以便white在ios上有背景?
根据Ray Wenderlich 的这篇文章,我能够创建一个如下的二叉树数据结构:
enum BinaryTree<T: Comparable> {
case empty
indirect case node(BinaryTree<T>, T, BinaryTree<T>)
var count: Int {
switch self {
case let .node(left, _, right):
return left.count + 1 + right.count
case .empty:
return 0
}
}
// 1.
mutating func naiveInsert(newValue: T) {
// 2.
guard case .node(var left, let value, var right) = self else {
// 3.
self = .node(.empty, newValue, .empty)
return
}
// 4. TODO: Implement naive algorithm!
if newValue < value …Run Code Online (Sandbox Code Playgroud) ios ×2
wkwebview ×2
binary-tree ×1
css ×1
html ×1
iphone ×1
javascript ×1
safari ×1
swift ×1
webkit ×1