如何在 SwiftUI 中的ConfirmationDialog 项中强制多行

问题描述 投票:0回答:1

我有一个确认对话框,其中一个条目有点太长,无法在一行中显示,因此它被从中间切掉:

我尝试过的任何方法都不起作用,我在这里有点没有想法。

尽管有一件值得注意的事情是它可能以某种方式实现:如果我显示对话框,然后增加文本大小(从辅助功能选项),那么在某些时候它会绕多行!此时,如果我保持对话框打开并返回到较小的文本大小,它甚至会保留在多行上,这是我最初想要的结果。当然,如果我关闭并重新打开对话框,它会恢复为单行并进行剪切以适合

尝试使用

.frame(height:
设置高度,也使用
.fixedSize(
,但没有用

这是一个可以重现的小片段

import SwiftUI

struct ConfirmationDialogTest: View {
    @State private var showDialog = false
    
    var body: some View {
        VStack {
            Button("Show dialog") {
                showDialog = true
            }
        }
        .confirmationDialog("Confirmation", isPresented: $showDialog) {
            Button("OK") {}
            Button("Very long text that will eventually be too long to be displayed on only one single line") {}
            Button("Delete", role: .destructive) {}
        }
    }
}
ios swiftui text dialog multiline
1个回答
0
投票

正如我在上面的评论中所表达的,我可以使用手动换行符有多行。以下是我的实现。

import SwiftUI

struct ConfirmView: View {
    @State private var showConfirmation = false
    @State private var foregroundColor = Color.black
    
    var body: some View {
        Button { 
            showConfirmation = true
        } label: { 
            Label("Do you want to tap me?", systemImage: "book.fill")
                .font(.title2)
                .foregroundColor(foregroundColor)
        }
        .buttonStyle(.bordered)
        .confirmationDialog("May I help you?  \nBy the way, we will be closed at 8 PM.  \nIf you need help, please let us know.  \nOne more thing...  Another store of ours is open\nuntil 10 PM.  So please go there if we are closed.", isPresented: $showConfirmation, titleVisibility: .visible, actions: {
            Button("Green") {
                foregroundColor = .green
            }
            Button("White") { 
                foregroundColor = .white
            }
            Button("Yellow") { 
                foregroundColor = .yellow
            }
            Button("Black") { 
                foregroundColor = .black
            }
        })
    }
}

以下是代码实现截图。没什么特别的。

© www.soinside.com 2019 - 2024. All rights reserved.