我在视图中有一个选择器,我希望将其限制为定义的高度和宽度。虽然下面的代码在视觉上实现了这一点,但选择器响应其区域之外的点击操作 - 在某些情况下,响应点击附近的按钮,就像我点击将选择器滚动到其值的开头或结尾一样。 (按钮不会响应点击;选择器会响应。但是当点击靠近选择器但在选择器外部时也会发生这种情况,因为此时没有控制。)
选择器似乎对上方、下方和侧面的触摸都有反应。当视图足够大(全屏或 2/3 屏幕)时,效果变得不那么明显,但是当整个应用程序仅占据屏幕的 1/3 时,选择器的宽度 - 作为视图的函数几何体——变得很小,其他控件也更靠近,并且变得非常难以使用。
如何使选取器忽略其可见区域之外的所有触摸?
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)
我考虑过的事情:
- Putting
.clipped
在框架上(建议here)。没有效果。
-
这个问题不是 SwiftUI,我也无法确定它的真正线索。
-
这个问题讨论扩大a 的可点击区域button。没有找到一种方法将关键见解(“将修饰符应用于按钮的内容而不是按钮本身”)应用到选取器 - 特别是在其高度方面。
-
这个问题没有答案,而且我在选择器中看到的内容似乎远远超出了对该问题的评论似乎归因的约 15 分“误差范围”。另外,我在选择器中看到的情况在模拟器和实际设备中都会发生。
这是一个解决方案。使用 Xcode 11.4 / iOS 13.4 进行测试。
.compositingGroup() // << add this modifier above clipping !!!
.clipped()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)