在 iPhone 6S 或 iPhone 6S Plus 模拟器上模拟力度触控/3D 触控

Posted

技术标签:

【中文标题】在 iPhone 6S 或 iPhone 6S Plus 模拟器上模拟力度触控/3D 触控【英文标题】:Simulate force touch / 3D touch on iPhone 6S or iPhone 6S Plus simulators 【发布时间】:2015-12-06 02:37:47 【问题描述】:

我正在尝试在 iPhone 6S 或 iPhone 6S Plus 模拟器上使用 Xcode 7 GM 模拟强制触摸。特别是,我试图模拟对正在实现应用程序快捷方式的测试应用程序图标的强制触摸。

如果有模拟这个的解决方案,请告诉我,我尝试了 Watch 模拟器用来模拟强制触摸的长按,但由于 iPhone 将其捕获为长按手势,因此无法正常工作。

更新:我从 Apple 下载了 ViewControllerPreview 示例代码。运行他们的示例应用程序,我看到模拟器虽然是 iPhone 6s,但不支持 3D/强制触摸功能。如果我要使用带有强制触控触控板的 macbook,我仍然不确定它是否支持该功能。

编辑:拥有强制触控触控板的 macbook 的人是否可以尝试使用触控板上的强制触控来模拟 iPhone 6s 或 6s Plus 模拟器上的 3D 触控?我的理论是,您可以使用新 MacBook 上的力度触控板来模拟新 iPhone 模拟器上的 3D 触控。如果您尝试,请添加评论并注明结果,我可以更新帖子。

EDIT2:新款 Macbook Pro 上的 Force Touch 触控板似乎没有帮助。

【问题讨论】:

你不是必须使用 Xcode 7.1 beta 吗? 使用 7.1B 运行时选项被禁用 看起来有雷达。 openradar.appspot.com/22635686 2015 Macbook Pro 上的 Force Touch 没有帮助.. 你也可以考虑使用this 【参考方案1】:

ios 中的强制压力(例如:Peek & Pop)不会通过 Xcode 7.0 或 Xcode 7.1 Beta 的模拟器暴露。压力触摸选项仅与那些版本的 Simulator 中的 watchOS 设备相关。如果您有 Xcode 7.1 测试版,您会注意到菜单选项实际上已禁用。

借助 Xcode 7.3 和 iOS 9.3 及更高版本的模拟器运行时,您可以使用强制触控触控板测试 peek/pop 功能。

【讨论】:

如何计算是浅按还是深按?【参考方案2】:

上面写着here!在页面底部....

开发环境

Xcode 7 支持 3D Touch 开发。 Xcode 的所有调试功能都可用于实现新功能。

请记住以下几点:

使用 Xcode 7.0,您必须在支持 3D Touch 的设备上进行开发。 Xcode 7.0 中的模拟器不支持 3D Touch。

使用 Xcode 7.0,您必须在代码中实现 peek 和 pop 视图控制器。 Xcode 7.0 中的 Interface Builder 不为配置视图控制器或 3D Touch 转换提供图形支持。

请务必在启用和禁用 3D Touch 的情况下测试您的应用,确保所有用户都可以使用所有功能。在 3D Touch 设备上,您可以在“设置”>“通用”>“辅助功能”>“3D Touch”中禁用 3D Touch

所以不幸的是,看起来我们需要亲自动手操作实际设备才能做到这一点。 :-(

编辑.....

从 Xcode 7.3 开始,如果您的 MacBook 的触控板支持强制触控,则有一种方法可以做到这一点。请参阅@iPrabu 的回答。

【讨论】:

仅供参考,我在答案中链接了一个工具,可以让您模拟强制触摸以显示“快速操作”菜单。 一个奇怪的是,如果您运行 6S 或 6S Plus 模拟器,硬件选项“Force Touch Pressure”被启用。在所有其他模拟器上都不是。所以看起来他们通过在模拟器中实现 3D 触摸获得了一部分,但后来放弃了。是时候买一部新手机了…… 链接页面现在显示 Xcode 7.1 不支持 3D Touch。 以 QA 开发人员的身份说话......这很糟糕。 @LucasAzzopardi 3D 触摸在 Xcode 7.3 中支持,前提是你有一个带强制触摸的触控板【参考方案3】:

对于“主屏幕快速操作”,我做了以下操作:

创建了一个 UIMutableApplicationShortcutItem 对象

把它放到launchOptions中UIApplicationLaunchOptionsShortcutItemKey

就是这样

看起来用户在应用图标上进行了 3d 触摸。

    let shortcut = UIMutableApplicationShortcutItem(type: ShortcutIdentifier.Third.type,
        localizedTitle: "Title",
        localizedSubtitle: "Subtitle",
        icon: UIApplicationShortcutIcon(type: .Play), userInfo: [
        AppDelegate.applicationShortcutUserInfoIconKey: UIApplicationShortcutIconType.Play.rawValue
        ]
    )

    let launchOption = [
        "UIApplicationLaunchOptionsShortcutItemKey" : shortcut
    ]

    launchOptions = launchOption

(应用程序:didFinishLaunchingWithOptions:)

【讨论】:

我做了一些类似的测试来测试它,但最好能做完整的测试。有几种方法可以通过应用快捷方式进入应用程序。一种方法是应用程序在后台运行,而您通过应用程序快捷方式将其置于前台。【参考方案4】:

对于那些正在开发快速操作(应用程序快捷方式)的人,您可以使用此脚本来模拟对模拟器上的应用程序的深度按压。

https://github.com/DeskConnect/SBShortcutMenuSimulator

这是一个屏幕截图:

对于那些首先考虑如何添加动作的人,有两个选项,静态和动态。你只能设置4个选项,它会首先显示所有静态选项,如果有空间,则显示动态选项。

以下是添加静态快捷方式的方法。很简单,只需在主Info.plist上添加一些键

在本例中,我将添加两个静态选项,一个带有默认搜索图标,另一个带有资产目录中的自定义图标。

<key>UIApplicationShortcutItems</key>
<array>
    <dict>
        <key>UIApplicationShortcutItemTitle</key>
        <string>Add Event (with custom icon)</string>
        <key>UIApplicationShortcutItemType</key>
        <string>com.reverse.appname.addevent</string>
        <key>UIApplicationShortcutItemIconFile</key>
        <string>custom-icon-from-asset-catalog</string>
        <key>UIApplicationShortcutItemSubtitle</key>
        <string>Here you can add some text below the option</string>
    </dict>
    <dict>
        <key>UIApplicationShortcutItemTitle</key>
        <string>Search Event (with default icon)</string>
        <key>UIApplicationShortcutItemType</key>
        <string>com.reverse.appname.searchevents</string>
        <key>UIApplicationShortcutItemIconType</key>
        <string>UIApplicationShortcutIconTypeSearch</string>
        <key>UIApplicationShortcutItemSubtitle</key>
        <string>Here you can add some text below the option</string>
    </dict>
</array>

【讨论】:

太好了,非常感谢!您是否设法模拟 Peek 和 Pop 功能? @Alexey 还没有,但至少你现在可以在真机上进行测试。模拟器很可能会在接下来的更新中正常工作,菜单选项已经存在。 我无法显示快捷方式项目你能帮帮我吗..? @DipenChudasama 当然,我已经更新了我的答案,向您展示如何添加快捷方式。 对于 9.1 以上的 iOS 版本,请使用 PoomSmart 的 fork:github.com/PoomSmart/SBShortcutMenuSimulator【参考方案5】:

这里有一些代码可以让您在模拟器中测试 3D Touch peek & pop。请记住,这是 iOS 9.0 的代码,一些内部/私有方法在 9.1 中发生了更改,因此您需要进行一些小的更改(提示:“位置”一词在方法名称之一).

https://gist.github.com/nickfrey/07e2c6d8d2e5444fb91d

这个和其他答案中提到的https://github.com/DeskConnect/SBShortcutMenuSimulator 都允许您在没有实际设备的情况下相当胜任地测试 3D Touch。

【讨论】:

【参考方案6】:

Xcode 7.1 正式支持 3D 触摸,但不支持模拟器。您需要有实际设备才能进行测试。检查来自 Apple 的 documentation 的最后一段。

但是,您可以使用第三方工具在模拟器上进行测试,例如上面Nicolas S 突出显示的那个。

【讨论】:

【参考方案7】:

您可以在模拟器中启用 3D Touch。感谢this 图书馆。

添加后使用command、control和shift键的组合可以启用3D Touch。

不要忘记仅在 Debug 环境中添加库。将其从发布环境中排除。

【讨论】:

这只是用于窥视和弹出还是用于家庭快捷方式? 是的,它仅用于窥视和弹出。您可以使用 this 作为主页快捷方式。 嗨,:S! Peek&Pop 功能在 Simulator 6s plus 和 Xcode 7.2 上不起作用,当我长按并使用命令、控制和 shift 的组合时……你能告诉我为什么吗?谢谢 @sanky009:当我长按并使用命令、控制和移位的组合时,Peek&Pop 功能在 Simulator 6s 和 Xcode 7.2 上不起作用...【参考方案8】:

较新的 macbook 具有启用强制触摸的触摸板。我认为这些选项只会在其中起作用。

【讨论】:

【参考方案9】:

使用 Xcode 7.3,您可以在模拟器中测试 3D 触摸功能,但只有一个限制。 (Xcode7.3 release notes reference)

您正在开发的机器(macbook/mac with trackpad)应该具有 3D 触控功能。

你可以在iOS模拟器硬件菜单下找到它。

来自 Pavel Alexeev 的评论:请务必在系统偏好设置 → 触控板中启用“强制点击和触觉反馈”

【讨论】:

确保在系统偏好设置→触控板中启用“强制点击和触觉反馈” 作为附加要求,您必须使用最新的模拟器,我尝试了 iOS 9.2 几分钟但没有成功 - 使用 9.3 可以;) 搜索了几分钟,结果发现我正在使用 iPhone 6 而不是 6s 进行模拟,这就是为什么按钮对我来说是灰色的 它只适用于触控板。如果连接了普通鼠标(不确定魔术鼠标),那将无法正常工作【参考方案10】:

它适用于 XCode 9 和 iphone 8 模拟器。 在您的 Mac 中转到系统偏好设置 -> 触控板 -> 启用 强制点击和触觉反馈

然后用力按压iphone模拟器的任意部分进行强制触摸动作。

【讨论】:

我做了这个,但它仍然不起作用:( Xcode 9.4.1,iPhone X 模拟器。 @Supertecnoboff 您必须使用触控板而不是鼠标。它适用于 Xcode 10,但我必须在 MacBook 中使用触控板并不明显。当然“强制点击和触觉反馈”必须勾选。

以上是关于在 iPhone 6S 或 iPhone 6S Plus 模拟器上模拟力度触控/3D 触控的主要内容,如果未能解决你的问题,请参考以下文章

音频引擎仅在运行 iOS 10 的设备(iphone 6)上失败,在所有模拟器设备上运行良好或真实设备直到 iphone 6s

iphone6s按图标怎么显示菜单啊?

iPhone 6S 在流式传输时出现音频问题

iPhone6s, iPhone6 P上通过dom.style或者 ref.current.style 的方式设置样式报错, 但是其他手机上可以正常运行的问题及解决方法

像 peek and pop 一样手动振动 iPhone 6S?

警惕!部分iPhone 6S无法开机,Apple已推出了维修计划