在 iPhone 6S 或 iPhone 6S Plus 模拟器上模拟压力触摸/3D 触摸

Simulate force touch / 3D touch on iPhone 6S or iPhone 6S Plus simulators

我正在尝试在 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 触控。如果您尝试,请添加注释并注明结果,我可以更新 post.

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

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

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

它说 here!在页面底部....

Development Environment

Xcode 7 supports 3D Touch development. All the debugging features of Xcode are available for implementing the new features.

Keep the following in mind:

With Xcode 7.0 you must develop on a device that supports 3D Touch. Simulator in Xcode 7.0 does not support 3D Touch.

With Xcode 7.0 you must implement your peek and pop view controllers in code. Interface Builder in Xcode 7.0 does not provide graphical support for configuring view controllers or transitions for 3D Touch.

Be sure to test your app with 3D Touch both enabled and disabled, ensuring that all features are available to all users. On a 3D Touch device, you can disable 3D Touch in Settings > General > Accessibility > 3D Touch

很遗憾,我们似乎需要亲身体验实际设备才能做到这一点。 :-(

编辑......

从 Xcode 7.3 开始,如果您的 MacBook 的触控板支持强制触摸,则有一种方法可以执行此操作。请参阅@iPrabu 的回答。

对于 "Home Screen Quick Actions" 触摸,我做了以下操作:

  • 创建了 UIMutableApplicationShortcutItem 对象

  • 将其放入 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:)

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

https://github.com/DeskConnect/SBShortcutMenuSimulator

截图如下:

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

以下是添加静态快捷方式的方法。这很简单,只需在主 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>

此处有一些代码可让您在模拟器中测试 3D Touch peek & pop。请记住,这是 iOS 9.0 的代码,某些 internal/private 方法在 9.1 中已更改,因此您需要进行一些小的更改 (提示:单词 'Position' 在其中一个方法名称中更改为 'Location').

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

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

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

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

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

  • 添加后结合使用命令、控制和shift键可以启用3D Touch。

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

较新的 macbook 配备了支持强制触摸的触摸板。我认为这些选项仅适用于此。

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

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

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

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

它适用于 XCode 9 & iphone 8 模拟器。 在您的 mac 中转到系统首选项 -> 触控板 -> 启用 强制点击和触觉反馈

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