ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试在 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触控板无济于事。

您不必使用 Xcode 7.1 beta 吗?
使用 7.1B 运行时选项被禁用
看起来有一个雷达。 openradar.appspot.com/22635686
2015 Macbook Pro 上的 Force Touch 无济于事。
您也可以考虑使用 this

k
kaylanx

它说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 touch 仅在您拥有带强制触控功能的触控板时才在 Xcode 7.3 中受支持
N
Nicolas S

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

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>

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

使用 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 9.2 几分钟但没有成功 - 使用 9.3 它可以工作;)
搜索了几分钟,最终意识到我正在使用 iPhone 6 而不是 6s 进行模拟,这就是为什么按钮对我来说是灰色的
它仅适用于触控板。如果连接了普通鼠标(不确定魔术鼠标),那将无法正常工作
J
Jeremy Huddleston Sequoia

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

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


如何计算是浅按还是深按?
A
Ashish Ahuja

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

添加后 使用命令、控制和移位键的组合可以启用 3D Touch。

不要忘记仅在调试环境中添加库。从发布环境中排除它。


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

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

创建了一个 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 :)


我做了类似的测试来测试它,但做完整的测试会很好。有几种方法可以通过应用快捷方式进入应用程序。一种方法是当应用程序在后台运行时,您通过应用程序快捷方式将其置于前台。
J
Jordan Smith

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

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

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


C
Community

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

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

https://i.stack.imgur.com/9oXZZ.png

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


a
atulkhatri

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


k
karthik

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

https://i.stack.imgur.com/5wv2r.png

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


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

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅