相关疑难解决方法(0)

iOS15 - SwiftUI WheelPicker 可滚动外框和剪切区域破坏其他界面

我在 HStack 中包含两个 WheelPicker,分别表示“小时”和“分钟”。每个选取器都设置在一个框架内(宽度:50,高度:30)并另外进行裁剪。

在 iOS14 中,它的行为符合预期,我可以滚动“小时”选择器来更改小时,滚动“分钟”选择器来更改分钟。

然而,在 iOS15 中,“分钟”轮选择器超出了 50 的框架宽度,并重叠到“小时”选择器中;如果我在“小时”选择器上滚动,“分钟”值会发生变化(而不是“小时”值),如果我在“分钟”选择器上滚动,它会按预期更改“分钟”。如果我触摸“小时”选择器外部的最左侧,则“小时”值会发生变化。

有人有同样的问题以及该问题的解决方法吗?

我遇到了添加“mask(rectangle()”的解决方法并尝试了它,但它在 iOS15 上不起作用。


    @State private var hour: Int = 0
    @State private var minute: Int = 0
    
    
    var body: some View {
        
        VStack {
            
            HStack (alignment: .center, spacing: 3) {
                
                NumberPicker("", selection: $hour
                                 , startValue: 0
                                 , endValue: 23
                                 , pickerSize: CGSize(width: 50, height: 30)
                )

                Text("hr")
                
                NumberPicker("", selection: $minute
                                 , startValue: 0
                                 , endValue: 59
                                 , pickerSize: CGSize(width: 50, height: 30)
                )

                Text("min")

            } …
Run Code Online (Sandbox Code Playgroud)

swiftui ios15

13
推荐指数
2
解决办法
2657
查看次数

SWIFTUI - 即使使用 Clipped() 后,选择器视图触摸/可滚动区域仍然超出框架

SWIFTUI 我有一个选择器视图(轮式),我将其框架剪裁()到屏幕的一半宽度,从 UI 中您可以看到它的一半,但可滚动区域在该框架之外仍然可操作。如何删除该外部区域以使其不可滚动?

HStack(spacing: 0) {
    Picker(selection: self.$viewModel.selectedFrameworkIndex, label: Text("")) {
    ForEach(0 ..< viewModel.Categories.count) {
        Text(self.viewModel.Categories[$0])
            .foregroundColor((self.colorScheme == .dark) ? Color.white : Color.black)
         }
    }
    .frame(width: width / 2) // width is width of my screen
    .clipped() 
}
Run Code Online (Sandbox Code Playgroud)

swiftui

5
推荐指数
1
解决办法
1515
查看次数

如何阻止 SwiftUI Picker 对其可见区域外的触摸做出反应?

我在视图中有一个选择器,我希望将其限制为定义的高度和宽度。虽然下面的代码在视觉上实现了这一点,但选择器响应其区域外的点击操作——在某些情况下,响应点击附近的按钮,就像我点击以将选择器滚动到其值的开头或结尾一样。(按钮不响应点击;选择器会响应。但是当点击靠近 - 但在 - 选择器之外 - 没有控制的地方时,也会发生这种情况。)

选择器似乎对上方、下方和侧面的触摸都有反应。当视图足够大(全屏或 2/3 屏幕)时,效果变得不那么明显,但是当整个应用程序只获得屏幕的 1/3 以及选择器的宽度时——作为视图的函数几何体——变小,其他控件也靠得更近,使用起来变得非常困难。

如何让 Picker 忽略其可见区域之外的所有触摸?

Picker(selection: self.$monthSelector, label: Text("Month")) {
   ForEach(0 ..< 12, id: \.self) {
      Text(self.monthNames()[$0])
         .foregroundColor(  Color.black )
      }
   }
      .labelsHidden()
       // THE FOLLOWING 2 STATEMENTS *IN CONJUNCTION* SEEM TO GIVE DESIRED Height/Width
      .fixedSize()
      .frame(maxWidth: geometry.size.width * 0.35, maxHeight: 100)
      .clipped()     // seems to accomplish nothing, visually or regarding touches
      .background(Color.white)
      .cornerRadius(10)
Run Code Online (Sandbox Code Playgroud)

我考虑过的事情:

  • 戴上.clipped镜框(此处建议)。没有效果。
  • 这个问题不是 SwiftUI,我无法确定它的真正线索。
  • 本问题讨论扩展按钮的可点击区域。看不到将关键洞察力(“将修饰符应用于按钮的内容而不是按钮本身”)应用于 Picker 的方法——尤其是关于它的高度。 …

picker swiftui

2
推荐指数
2
解决办法
259
查看次数

标签 统计

swiftui ×3

ios15 ×1

picker ×1