swift - SwiftUI 中的 UITextField 溢出屏幕宽度
问题描述
在 SwiftUI 中使用 UITextField 我发现当文本溢出 UITextField 宽度时会出现问题。而不是 UITextField 固定大小并滚动文本,它会增长直到溢出屏幕宽度。
我尝试了一些方法,例如在 AppTextField 中放置 fixedSize(),为 UITextField 设置一个框架,但我没有找到解决此问题的方法。
应用程序屏幕
struct ContentView: View {
@State var text = ""
var body: some View {
VStack {
AppTextField(text: $text)
.frame(height: 48)
.padding(.horizontal, 16)
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(lineWidth: 1)
)
}
.padding(.horizontal, 16)
}
}
应用文本域
import Foundation
import UIKit
import SwiftUI
struct AppTextField: UIViewRepresentable {
@Binding var text: String
init(text: Binding<String>) {
self._text = text
}
func makeUIView(context: UIViewRepresentableContext<AppTextField>) -> UITextField {
let textField = UITextField(frame: .zero)
textField.delegate = context.coordinator
return textField
}
func makeCoordinator() -> AppTextField.Coordinator {
return Coordinator(text: $text)
}
func updateUIView(_ textField: UITextField, context: UIViewRepresentableContext<AppTextField>) {
textField.text = text
}
class Coordinator: NSObject, UITextFieldDelegate {
@Binding var text: String
init(text: Binding<String>) {
self._text = text
}
func textFieldDidChangeSelection(_ textField: UITextField) {
guard let text = textField.text else {
return
}
DispatchQueue.main.async {
self.text = text
}
}
}
}
解决方案
推荐阅读
- c# - 有没有办法以另一种形式调用一个表单的键事件句柄?C# 窗体
- google-colaboratory - 如何在 google colab 中安装 nvidia 迁移学习工具包?
- c# - 在 EF Core 中的 linq 中进行分组
- c - 为什么主函数外的 NULL 赋值会返回错误
- java - Spring Boot Thymeleaf 下拉列表选项不显示值
- r - 将长格式改成宽格式、多个 ID 和多个值、意外输出(已解决:问题=不同的库)
- html - 如何将动态布局分散到多个列中?
- node-red - 为所有人安装 Node-Red 服务
- jquery - Jquery 更新了选择下拉菜单中的选项
- ruby-on-rails - 神社新手。缓存有什么用?