【问题标题】:.onTapGesture doesn't work on Stepper, only on its text - iOS 15.onTapGesture 不适用于 Stepper,仅适用于其文本 - iOS 15
【发布时间】:2022-10-02 07:33:16
【问题描述】:

下面的.onTapGesture 只有在我点击文本“最小金额:0.01 美元”时才会被调用,但当我点击 + 或 - 时不会调用。我怎样才能让它在 + 或 - 上工作?

我尝试在步进器下方设置一个框架:

.frame(maxWidth: .infinity, maxHeight: .infinity)

或设置前景色但没有区别。任何想法?

它的代码:

@ViewBuilder var minCoinAmount: some View {
    // Min coin amount
    Stepper(value: $smallBalanceLimitDefinedByUser,
            in: range,
            step: step) {
        // Separated in two texts so it can be localized properly
        HStack {
            Text(\"Min. amount:\")
            Text(utils.formatDoubleTo2DigitsString(amount: smallBalanceLimitDefinedByUser))
        }
    }
}

我用以下方式调用它:

minCoinAmount
    .disabled(true)
    .onTapGesture {
        // Presents the Premium page
        storeViewModel.premiumIsPresented.toggle()
    }
  • 尝试将.onTapGesture 放在Stepper 本身上,如果需要,再放在HStack 上(而不是放在整个视图上)。作为最后的手段,您可以在视图上放置一个清晰的颜色,然后在其上使用点击手势。

标签: swift swiftui


【解决方案1】:

使用 contentShape 修饰符添加命中测试区域,例如

.contentShape(Rectangle())    // << here !!
.onTapGesture {

使用 Xcode 13.4 / iOS 15.5 测试

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2021-08-06
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多