按钮和onTapGesture的区别

问题描述 投票:0回答:4

我对 swiftui 很陌生,我很好奇使用显示图像的按钮或带有 onTapGesture 修饰符的图像(使操作与按钮上的操作类似)有什么区别。

swift xcode button swiftui
4个回答
4
投票

在您描述的用例中,您可以使用其中任何一个,但仅供参考,Apple 在其 onTapGesture 文档中提供了以下指南:

如果您要创建功能上与 Button 等效的控件,请改用 ButtonStyle 创建自定义按钮。

onTapGesture 添加了当视图识别出点击手势时要执行的操作,并且可以定制以响应任意数量的点击(默认为 1)。

按钮是一种在触发时执行操作的控件,并且具有自动调整其视觉样式以匹配不同容器和上下文中的预期样式的优点。

在 iOS 和 watchOS 中,用户通过点击来触发标准按钮。 在 macOS 中,用户通过单击来触发标准按钮。 在 tvOS 中,用户通过按下外部遥控器(例如 Siri Remote)上的“选择”键,同时将注意力集中在按钮上来触发标准按钮。

有关更多信息,请参阅此处的 Apple 文档:https://developer.apple.com/documentation/swiftui/text/ontapgesture(count:perform:) https://developer.apple.com/documentation/swiftui/button


0
投票

当您想要按钮的功能时,我建议使用 Button。我注意到当 Voice Over 打开时,图像不能用作按钮。当我将它们更改为使用 Button 时,它解决了问题。


0
投票

使用真正的 Button 和将 onTapGesture 添加到图像或形状之间的最大区别在于,您是否想要使用不同风格的按下来执行详细操作。 Button 类吸收轻击,甚至在长按结束时重新发出它们...因此,如果您想将轻击组合为一件事或长按另一件事,则 Button 会使这变得非常非常困难,虽然对于图像来说这是微不足道的。

另一方面,如果您希望它像“普通”按钮一样工作(点击时会闪烁一点,点击区域略大于其内容等),那么,它会自动内置到 Button 中,并且仅将 tapGestures 添加到其他类型的对象有点困难。


0
投票

当您需要标准按钮时选择 Button,并在需要向自定义视图添加点击手势行为时使用 onTapGesture。

© www.soinside.com 2019 - 2024. All rights reserved.