加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 如何以编程方式打开Safari Extension ToolbarItem popo

发布时间:2020-12-14 02:24:15 所属栏目:百科 来源:网络整理
导读:我想以编程方式触发Safari Extension toolbarItem上的“click”事件,以便在网页上发生某些事情后出现我的自定义弹出窗口.我正在使用新的 Xcode扩展IDE,并使用界面构建器构建了我的popover. StackOverflow上的所有答案目前都处理Safari扩展构建器中内置的扩展
我想以编程方式触发Safari Extension toolbarItem上的“click”事件,以便在网页上发生某些事情后出现我的自定义弹出窗口.我正在使用新的 Xcode扩展IDE,并使用界面构建器构建了我的popover. StackOverflow上的所有答案目前都处理Safari扩展构建器中内置的扩展,而不是Xcode接口中的扩展.例如,我尝试过注入Safari JS解决方案,例如:
safari.extension.toolbarItems[0].showPopover();

但没有任何反应,我不认为它在Xcode中构建扩展时应该可行.我不关心弹出窗口是在注入的javascript中还是在我的SafariExtensionHandler.Swift文件中触发 – 我只需要一种方法来显示它而无需用户单击工具栏项.

我使用扩展名的info.plist将我的popover与我的工具栏项相关联,我已将其链接到下面:

https://i.stack.imgur.com/VxyLs.png

该扩展与本机CocoaOS应用程序捆绑在一起,并使用在WWDC ’15(下面的链接)中引入的新Xcode范例构建.我可以使用以下方法访问SafariExtensionHandler.Swift中的Toolbaritem:

func getToolbarItem(completionHandler: @escaping (SFSafariToolbarItem?) -> Void) {
    SFSafariApplication.getActiveWindow {$0?.getToolbarItem (completionHandler: completionHandler)}
}

但toolbarItem对象似乎没有显示弹出窗口的方法.

https://developer.apple.com/videos/play/wwdc2016/214/

打开Safari扩展的Info.plist并找到SFSafariToolbarItem键,然后查找Action子键并确保将其设置为Popover.

此外,请确保您的SFSafariExtensionViewController子类指定所需的preferredContentSize.

import SafariServices

class SafariExtensionViewController: SFSafariExtensionViewController {

    static let shared = SafariExtensionViewController()

    override func viewDidLoad() {
        super.viewDidLoad()

        preferredContentSize = NSSize(width: 330,height: 119)
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读