我在 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 我有一个选择器视图(轮式),我将其框架剪裁()到屏幕的一半宽度,从 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) 我在视图中有一个选择器,我希望将其限制为定义的高度和宽度。虽然下面的代码在视觉上实现了这一点,但选择器响应其区域外的点击操作——在某些情况下,响应点击附近的按钮,就像我点击以将选择器滚动到其值的开头或结尾一样。(按钮不响应点击;选择器会响应。但是当点击靠近 - 但在 - 选择器之外 - 没有控制的地方时,也会发生这种情况。)
选择器似乎对上方、下方和侧面的触摸都有反应。当视图足够大(全屏或 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)
我考虑过的事情: