试图创建一个用户可以编写一串文本在屏幕上环绕的界面.

我创建了一个名为‘TextArea’的SwiftUI页面,我可以在需要时在另一个页面上调用它.因为文本编辑器不能放置占位符文本.我需要创建一个,这是我从其他用户那里得到的代码.

import SwiftUI
import UIKit

struct TextArea: View {
    @Binding var text: String
    let placeholder: String
    
    init(_ placeholder: String, text: Binding<String>) {
        self.placeholder = placeholder
        self._text = text
        UITextView.appearance().backgroundColor = .clear
    }
    
    var body: some View {
        ZStack(alignment: .topLeading) {
            
            if text.isEmpty {
                Text(placeholder)
                    .foregroundColor(Color(.placeholderText))
                    .padding(.horizontal, 8)
                    .padding(.vertical, 12)
            }
            
            TextEditor(text: $text)
                .padding(4)
        }
        .font(.body)
    }
}

然后在另一个SwiftUI页面上,我用这段代码调用它.

    TextArea("What's Happening", text: $caption)

在那一页的顶端,我确立了它

    @State private var caption = ""

代码编译时没有错误,在仿真器中也没有生成任何问题.当我运行该应用程序时,没有占位符文本.文本编辑器运行良好,符合预期.唯一缺少的是占位符文本.

提前谢谢!

推荐答案

ZStack从下到上放置视图.

因此,您可以交换占位符视图和文本编辑器.

struct TextArea: View {
    @Binding var text: String
    let placeholder: String
    
    init(_ placeholder: String, text: Binding<String>) {
        self.placeholder = placeholder
        self._text = text
        UITextView.appearance().backgroundColor = .clear
    }
    
    var body: some View {
        ZStack(alignment: .topLeading) {
            TextEditor(text: $text) // <= Here
                .padding(4)
            
            if text.isEmpty {
                Text(placeholder)
                    .foregroundColor(Color(.placeholderText))
                    .padding(.horizontal, 8)
                    .padding(.vertical, 12)
            }
        }
        .font(.body)
    }
}

Ios相关问答推荐

SwiftUI.从自定义视图修改器访问自定义视图子视图

iOS 17-在Xcode 15中添加导航控制器时,导航栏不会立即显示

使用 WebKit 加载 YouTube 视频时控制台中打印警告

如何删除点击时按钮的不透明动画?

垂直分页 UIScrollView 高度不正确

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

React Native IOS base64 编码图像不显示

UIControl 子类 - 按下时显示 UIMenu

如何在 SwiftUI 中创建显示当前电池电量的电池徽章

如何解码没有名称的 JSON 数组?

SwiftUI Select 器值在超过最大值时重置

如何 comments .plist 文件中的行?

在 Xcode 5 中为超级视图添加间距约束

iOS:使用 UIView 的 'drawRect:' 与其层的委托 'drawLayer:inContext:'

如何启用滑动以删除 TableView 中的单元格?

在 Xcode 4 中将静态库链接到 iOS 项目

NSPredicate 用于测试 NULL 和空白字符串

正确的领域使用模式/最佳实践?

在 SKScene 中设置按钮

如何立即移动 CALayer(无动画)