相关疑难解决方法(0)

SwiftUI 多轮选择器触摸边界偏移和崩溃 iOS 15

我的生产应用程序在 iOS 15 上崩溃的问题。当我在 Xcode 中通过调试或发布运行它时,它不会崩溃。我以某种方式设法将其范围缩小到我的多轮选择器代码,它们并排显示。

与 iOS 15 上一个列表中多个滚轮选择器的 SwiftUI 问题类似的问题

对于崩溃,我在其他地方找到了将表单更改为列表并添加 .id(UUID()) 的建议

List {
   ...
}.id(UUID())
Run Code Online (Sandbox Code Playgroud)

这似乎阻止了崩溃,但如果您运行代码,您会发现触摸区域的边界在轮子上关闭,这意味着您根本无法滚动第一个轮子,并且将其他可以触摸的轮子滚动到下一个轮子移动它。我尝试删除剪裁和调整框架,但触摸区域似乎偏移。

任何建议都会有帮助,我还将向苹果提交反馈,并将使用反馈号码进行编辑

请参阅偏移问题的视频 单击此处

用于重现问题的精简代码

import SwiftUI

struct ContentView: View {
    @State var interval:TimeInterval = 0
    @State var selectedHour = 0
    @State var selectedMin = 0
    @State var selectedSecond = 0
    
    var body: some View {
        //List {
        Form {
            Section (header: Text("Interval")) {
                HStack (spacing: 0)  {
                    Picker(selection: self.$selectedHour, label: Text("Hour")) {
                        ForEach(0..<25) { hour in
                            Text("\(hour) h")
                        } …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

5
推荐指数
0
解决办法
1537
查看次数

SwiftUI Picker 的可点击区域重叠

我目前正在尝试创建一个页面,Picker其中包含三个相邻视图,HStack如下所示:

在此输入图像描述

我制作了一个CustomPicker视图,将框架限制为 90 x 240,然后使用.compositingGroup().clipped()使每个选择器的可选区域不重叠。

自定义选择器.swift

import SwiftUI

struct CustomPicker: View {
    @Binding var selection: Int
    let pickerColor: Color
    
    var numbers: some View {
        ForEach(0...100, id: \.self) { num in
            Text("\(num)")
                .bold()
        }
    }
    
    var stroke: some View {
        RoundedRectangle(cornerRadius: 16)
            .stroke(lineWidth: 2)
    }
    
    var backgroundColor: some View {
        pickerColor
            .opacity(0.25)
    }
    
    var body: some View {
        Picker("Numbers", selection: $selection) {
            numbers
        }
        .frame(width: 90, height: 240)
        .compositingGroup()
        .clipped()
        .pickerStyle(.wheel) …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui swiftui-picker

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

SwiftUI中的多组件选择器(UIPickerView)

我试图在SwiftUI应用程序中添加三成分选择器(UIPickerView)(在传统的UIKit应用程序中,数据源3将从该numberOfComponents方法返回),但是我在任何地方都找不到此示例。

我曾尝试添加一个由三个单一组件选择器组成的HStack,但是如果它们全部都属于一个选择器,则其透视图将与之不同。

picker uipickerview swift swiftui

4
推荐指数
4
解决办法
1536
查看次数

如何阻止 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 ×4

swift ×3

ios ×2

picker ×2

swiftui-picker ×1

uipickerview ×1