小编Jon*_*oks的帖子

在 UIMenuItem 上设置accessibilityLabel

我正在尝试设置accessibilityLabela UIMenuItem,但似乎没有效果。无论如何,VoiceOver 只是读取项目的标题:

    let foo = UIMenuItem(title: "foo", action: #selector(doSomething))
    item.isAccessibilityElement = true
    item.accessibilityLabel = "bar"
Run Code Online (Sandbox Code Playgroud)

对于此项目,VoiceOver 会读取“foo”而不是“bar”。此外,accessibilityHint似乎也被忽略了。

accessibility ios voiceover uimenuitem swift

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

WKWebview 允许LinkPreview 错误地中断文本选择

我们有一个使用 WKWebview 的应用程序,但设置allowsLinkPreviewfalse因为我们不希望链接预览行为。似乎从 iOS 13.4 开始,在没有3D 触摸功能的设备(较旧的设备和较新的 iphone 型号)上,设置allowsLinkPreview为 false也会禁用页面中的所有文本选择!对于我们的应用程序,文本选择至关重要。

在文档中的两行之间提出了这个理论阅读

在 iOS 中,此属性在支持 3D Touch 的设备上可用。

在运行 iOS 13 及更高版本的设备上,无论设备是否支持 3D Touch,人们都可以使用长按手势打开上下文菜单。在 3D Touch 设备上,手势可以更快地显示上下文菜单。

这似乎是一个错误,禁用链接预览会禁用web视图中的所有按住手势。

我能想出的唯一解决方法是设置allowsLinkPreviewtrue,然后通过WKUIDelegate 协议禁用上下文菜单。这将禁用单击链接的弹出窗口,但不会禁用单击图像的弹出窗口。而且,它仍然允许用户将链接拖放到 safari 中的分屏视图中,这是我们不想要的。

关于如何完全禁用链接预览/上下文菜单/拖放行为同时仍然允许文本选择的任何建议将不胜感激!

更新
因为我控制了我的应用程序的内容,所以我能够使用以下 css 禁用图像的按住:-webkit-touch-callout: none; 所以我剩下的问题只是禁止从WKWebView.

更新 2 同样,我能够用来-webkit-user-drag: none;禁用链接的拖动,但知道一个非 css 修复程序对我来说似乎是一个 Apple 错误仍然很有用。

ios swift wkwebview 3dtouch ios13.4

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

Branch.io:javascript检测是否安装了移动应用程序

我有一个网页,我希望页面上的特定链接打开我们的原生移动应用程序,如果安装了应用程序,如果没有,请执行它当前正在做的事情(提交表单).

注意:我认为这与智能横幅不同 - 我不想在此页面上显示横幅.如果没有移动应用,我只想要正常的应用流程.

我已经集成branch-sdk在网页和我的ios应用程序中.我已经成功建立了从网页到iOS应用程序的深层链接(代码未显示),但是在嗅探应用程序是否已安装时,我没有得到结果.

<head>是我网页上的代码:

    branch.init('MY_KEY', null, function(err, data) {
        console.log('init...');
        console.dir(data);
    });
    branch.setIdentity('test-user', function(err, data) {
        console.log('identity...');
        console.dir(data);
    });
    branch.data(function(err, data) {
        console.log('data...');
        console.dir(data);
    })
Run Code Online (Sandbox Code Playgroud)

这是我application(_:didFinishLaunchingWithOptions:)在iOS方面的代码:

    //Initialize Branch
    if let branch = Branch.getInstance() {
        branch.setDebug()
        branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: { params, error in
            if let params = params, error == nil {
                // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app …
Run Code Online (Sandbox Code Playgroud)

javascript ios branch.io

0
推荐指数
1
解决办法
1004
查看次数