相关疑难解决方法(0)

SwiftUI TextField 采用最大宽度

我有一个导航列表,每个列表项都采用以下格式:

HStack {
        TextField("Insert something here.",text: self.$userData.pages[i].title)
            .border(Color.blue)
        Spacer()
    }
Run Code Online (Sandbox Code Playgroud)

这导致以下视图:

可触摸区域由蓝色边框突出显示,并占据行的整个宽度

这样做的问题是,尽管列表项是一个导航链接,但用户单击该项目的任意位置将导致他们编辑文本内容。我更喜欢 aTextField与a具有相同的宽度Text

蓝色边框环绕文本而不是采用最大宽度

所以,如果外面的用户点击TextField,导航工程,但如果他们点击文本,这将让他们编辑的文本。(以上视图是带Text字段的)。

如果我问了一个不清楚或不好的问题,我深表歉意。我是 Stack Overflow 和 SwiftUI 的新手。

编辑:

我已经尝试使用fixedSize修饰符,并且 TextField 正确地包装了我的文本,但现在导航链接不起作用(即单击它只是不导航)。这是我的完整代码:

NavigationLink(destination: PageView(page: self.userData.pages[i])) {
                        HStack {
                            Button(action: {}){
                                TextField(" ", text: self.$userData.pages[i].title)
                                .fixedSize()

                            }
                            .buttonStyle(MyButtonStyle())
                            .border(Color.blue)
                            Spacer()
                        }
                    }
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-navigationlink

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

获取视图的 CGRect

我使用的是“RectGetter”来获得CGRectView

像这样:

Text("Hello")
    .background(RectGetter(rect: self.$rect))


struct RectGetter: View {
    @Binding var rect: CGRect

    var body: some View {
        GeometryReader { proxy in
            self.createView(proxy: proxy)
        }
    }

    func createView(proxy: GeometryProxy) -> some View {
        DispatchQueue.main.async {
            self.rect = proxy.frame(in: .global) // crash here
        }

        return Rectangle().fill(Color.clear)
    }
}
Run Code Online (Sandbox Code Playgroud)

但有时我在设置 rect 时会崩溃。

Thread 0 name:
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x00000001a1ec5ec4 __pthread_kill + 8
1   libsystem_pthread.dylib         0x00000001a1de5724 pthread_kill$VARIANT$armv81 + 216 (pthread.c:1458)
2   libsystem_c.dylib               0x00000001a1d358c0 __abort + 112 (abort.c:147) …
Run Code Online (Sandbox Code Playgroud)

crash cgrect swiftui

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

标签 统计

swiftui ×2

cgrect ×1

crash ×1

swift ×1

swiftui-navigationlink ×1