小编emr*_*s57的帖子

如何要求协议只能由特定类采用

我想要这个协议:

protocol AddsMoreCommands {
     /* ... */
}
Run Code Online (Sandbox Code Playgroud)

只能从继承自类的类中采用UIViewController.这个页面告诉我,我可以通过编写指定它只被类(而不是结构)采用

protocol AddsMoreCommands: class {
}
Run Code Online (Sandbox Code Playgroud)

但是我看不出如何要求它只被特定的类所采用.该页后面讨论了where为协议扩展添加条款以检查一致性,但我也看不出如何适应它.

extension AddsMoreCommands where /* what */ {
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?谢谢!

generics protocols swift

79
推荐指数
4
解决办法
2万
查看次数

Knockout样式绑定:firefox没有设置背景色?

当我尝试使用styleknockout.js绑定更改小盒子的背景颜色时:

<input class="biggerBox" type="text" data-bind="value: colorText, valueUpdate: 'afterkeydown'" />
<div class="littleBox" data-bind="style: {'background-color': colorText}"></div>
Run Code Online (Sandbox Code Playgroud)

在js中:

var viewModel = {
    colorText: ko.observable('rgba( 80, 120, 160, 1)')
};
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)

它就像我在Chrome和Safari中所期望的那样工作,当我在输入框中输入文本时,小盒子的背景颜色会发生变化.但不是在Mac上的Firefox 24.0中; colorText可观察的更改,但从不设置背景颜色.但是,如果我尝试更改前景色,则适用于所有Chrome,Safari和Firefox.我还没试过IE.

我在这里误解了节目吗?或者这是一个knockout.js的错误?还是Firefox的bug?它似乎与如何使用样式数据绑定无关

jsfiddle 在这里

css firefox knockout.js

14
推荐指数
2
解决办法
7163
查看次数

wkwebview仍然没有处理通用链接

我有一个针对的iOS通用链接myApp.当我在另一个应用程序中单击该链接时,myApp打开并完美显示正确的支付,它正在工作.

myApp包括一个内置的浏览器使用WKWebView.当我从我的内置浏览器中单击相同的通用链接时,iOS不会发送链接myApp,它会提取并获取网页.

Apple医生

如果您实例化SFSafariViewController,WKWebView或UIWebView对象以处理通用链接,iOS将在Safari中打开您的网站,而不是打开您的应用程序.但是,如果用户点击嵌入式SFSafariViewController,WKWebView或UIWebView对象中的通用链接,iOS将打开您的应用程序.

我注意到这个类似的问题,其中的建议是定义一个WKWebView代表.我有两个WKWebView代表定义和使用myApp,它没有帮助.这个问题有很多赞成但没有答案.

WKWebView可以实际打开其他应用程序的通用链接.如果我点击链接https://open.spotify.com/artist/3hv9jJF3adDNsBSIQDqcjp从内myApp WKWebView则打开不打开任何网页的中间(即使长按菜单Spotify应用中myApp不提供"在Spotify的开放").但是myApp当我从内部点击它时,iOS不会提供通用链接myApp.

经过大量测试后,我发现通过查找特定的URL并取消显示,我可以阻止显示与通用链接相关的网页:

func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
    if let urlString = navigationResponse.response.URL?.absoluteString {
        if urlString.hasPrefix(myULPrefix) { // it's a universal link targetted at myApp
            decisionHandler(.Cancel)
            return
        }
    }
    decisionHandler(.Allow)
}
Run Code Online (Sandbox Code Playgroud)

我必须在响应的决策处理程序中执行此操作,而不是执行操作的决策处理程序.当我做到这一点,通用链路排队等待传递到myApp. …

ios wkwebview ios-universal-links

12
推荐指数
1
解决办法
2267
查看次数

WKWebView 是否实现家长控制?

我的应用程序中有一个简单的 WKWebView 浏览器。我碰巧在 iOS 9.1 手机上进行了测试,并且在“设置”-“常规”-“限制”中打开了家长控制。在测试中(诚实的)我碰巧点击了一个成人网站的链接。我看见

您无法浏览 [URL] 上的此页面,因为它受到限制。

我不知道 WKWebView 实现了 Apple 家长控制。如果这样做的话就很方便,可以避免商店里的年龄限制问题。我所看到的家长控制功能是否正在运行?是否有 Apple 文档说 WKWebView 实现了家长控制?

我必须打开Settings - General - Restrictions并设置Websites - Limit Adult Content才能看到这种行为。当我这样做时,我也在 iOS 9.2 iPad 上看到了这种行为。

parental-control ios wkwebview

6
推荐指数
0
解决办法
450
查看次数

从UIWebView中的链接打开iOS6 Apple Maps应用程序

如果我在网页中显示指向地图的链接

<a href="http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398">Location</a>
Run Code Online (Sandbox Code Playgroud)

它在标准iPhone Safari浏览器中单击时打开原生iOS6 Apple Maps应用程序.当我在我的应用程序内的UIWebView中显示相同的网页,然后单击链接,我的委托方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
Run Code Online (Sandbox Code Playgroud)

被调用,参数是

url=http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
Run Code Online (Sandbox Code Playgroud)

如果委托方法返回YES以指示UIWebView应该继续并打开链接,则会立即触发对委托的新调用,这次参数是

url=http://maps.google.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398 
navigationType=UIWebViewNavigationTypeLinkClicked
Run Code Online (Sandbox Code Playgroud)

YES可以预见,返回到此结果会导致我的UIWebView中的maps.google.com网页打开.但实际上我确实想要推出iOS6 Apple Maps应用程序.我可以尝试CLGeocoder创建一个MKMapItemURL,如何在iOS 6中启动具有特定地址的iOS Maps App?,但CLGeocoder似乎想要纯文本,而不是一个带有所有常规注释的url,相当详细的解析工作.如果我以不同于Mobile safari的方式解析URL,那么我可能会看到不同的地图结果,具体取决于我是否通过我的UIWebView或Safari从相同的初始链接到达地图应用程序.

有没有办法让UIWebView从链接打开iOS6 Apple Maps应用程序,而无需解析然后对URL进行地理编码?

另外,在使用maps.google.com url调用我的委托方法后,使用以下参数调用它两次:

url=about:blank 
navigationType=UIWebViewNavigationTypeOther
Run Code Online (Sandbox Code Playgroud)

并且最终对显示器没有影响.知道这是什么意思吗?

url maps uiwebview ios ios6

5
推荐指数
1
解决办法
3559
查看次数