我正在尝试在 iPhone 6S 或 iPhone 6S Plus 模拟器上使用 Xcode 7 GM 模拟强制触摸。特别是,我试图模拟对正在实现应用程序快捷方式的测试应用程序图标的强制触摸。
让我知道是否有解决方案来模拟这一点,我尝试了 Watch 模拟器用来模拟强制触摸的长按,但由于 iPhone 将其捕获为长按手势,因此无法正常工作。
更新:我从 Apple 下载了 ViewControllerPreview 示例代码。运行他们的示例应用程序,我看到模拟器虽然是 iPhone 6s,但不支持 3D/强制触摸功能。如果我要使用带有强制触控触控板的 macbook,我仍然不确定它是否支持该功能。
https://i.stack.imgur.com/rIGxe.png
编辑:有人可以使用具有强制触控触控板的 macbook 尝试使用触控板上的强制触控来模拟 iPhone 6s 或 6s Plus 模拟器上的 3D 触控吗?我的理论是,您可以使用新 MacBook 上的力度触控板来模拟新 iPhone 模拟器上的 3D 触控。如果您尝试,请添加评论并注明结果,我可以更新帖子。
EDIT2:似乎较新型号的macbook专业人士上的Force Touch触控板无济于事。
它说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 的回答。
对于那些正在开发快速操作(应用程序快捷方式)的人,您可以使用此脚本来模拟对模拟器上的应用程序的深度按压。
https://github.com/DeskConnect/SBShortcutMenuSimulator
https://i.stack.imgur.com/4btha.png
对于那些首先考虑如何添加动作的人,有两个选项,静态和动态。您只能设置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>
使用 Xcode 7.3,您可以在模拟器中测试 3D 触摸功能,但只有一个约束。 (Xcode7.3 release notes reference)
您正在开发的机器(macbook/mac with trackpad)应该具有 3D 触摸功能。
您可以在 iOS 模拟器硬件菜单下找到它。
来自 Pavel Alexeev 的评论:请务必在系统偏好设置 → 触控板中启用“强制单击和触觉反馈”
https://i.stack.imgur.com/jqgvW.png
iOS 中的强制压力(例如:Peek & Pop)不会通过 Xcode 7.0 或 Xcode 7.1 Beta 的模拟器暴露。压力触摸选项仅与那些版本的 Simulator 中的 watchOS 设备相关。如果您有 Xcode 7.1 测试版,您会注意到菜单选项实际上已禁用。
使用 Xcode 7.3 和 iOS 9.3 及更高版本的模拟器运行时,您可以使用强制触摸触控板测试 peek/pop 功能。
您可以在模拟器中启用 3D Touch。感谢 this 库。
添加后 使用命令、控制和移位键的组合可以启用 3D Touch。
不要忘记仅在调试环境中添加库。从发布环境中排除它。
对于“主屏幕快速操作”,我做了以下操作:
创建了一个 UIMutableApplicationShortcutItem 对象
把它放到 UIApplicationLaunchOptionsShortcutItemKey 的 launchOptions
就是这样
看起来用户在应用程序图标上进行了 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 :)
这里有一些代码可以让您在模拟器中测试 3D Touch peek & pop。请记住,这是 iOS 9.0 的代码,一些内部/私有方法在 9.1 中已更改,因此您需要进行一些小的更改(提示:在其中一个中,“位置”一词已更改为“位置”方法名称)。
https://gist.github.com/nickfrey/07e2c6d8d2e5444fb91d
其他答案中提到的这个和https://github.com/DeskConnect/SBShortcutMenuSimulator都允许您在没有实际设备的情况下相当胜任地测试 3D Touch。
Xcode 7.1 正式支持 3D touch,但不支持模拟器。您需要有实际设备才能进行测试。检查 Apple 提供的 documentation 的最后一段。
https://i.stack.imgur.com/Pg2Ii.png
https://i.stack.imgur.com/9oXZZ.png
但是,您可以使用第三方工具在模拟器上进行测试,例如上面 Nicolas S 突出显示的模拟器。
较新的 macbook 具有启用强制触摸的触摸板。我认为这些选项只会在其中起作用。
它适用于 XCode 9 和 iphone 8 模拟器。在您的 Mac 中,转到系统偏好设置 -> 触控板 -> 启用强制点击和触觉反馈。
https://i.stack.imgur.com/5wv2r.png
然后用力按下iphone模拟器的任何部分以执行强制触摸动作。