ios - scrollView 在 .sheet 中超出其边界
问题描述
我在 .sheet 模式中有一个视图。视图在垂直模式下超出 .sheet 边界,但在横向模式下很好。
该视图只有滚动视图,并且在滚动视图中,有一堆自定义 UI Kit 输入字段。
滚动视图:
ScrollView(.vertical) {
Text("Register")
.font(.headline)
.bold()
.padding()
SATextField(tag: 0, placeholder: "Name", changeHandler: { (name) in
self.name = name
}, onCommitHandler: {
print("commit handler")
}, text: self.name)
.onTapGesture {
self.name = ""
}
.padding()
.keyboardType(.default)
.overlay(
RoundedRectangle(cornerRadius: 16)
.stroke(self.name == "" ? borderColor : Color.green, lineWidth: 2)
)
.fixedSize(horizontal: false, vertical: true)
//more fields
}
自定义输入字段:
struct SATextField: UIViewRepresentable {
private let tmpView = WrappableTextField()
//var exposed to SwiftUI object init
var tag:Int = 0
var placeholder:String?
var fieldVariable:String?
var changeHandler:((String)->Void)?
var returnKeyType: UIReturnKeyType = .default
var isSecureTextEntry: Binding<Bool>? = nil
var onCommitHandler:(()->Void)?
var text: String?
func makeUIView(context: UIViewRepresentableContext<SATextField>) -> WrappableTextField {
tmpView.tag = tag
tmpView.delegate = tmpView
tmpView.placeholder = placeholder
tmpView.onCommitHandler = onCommitHandler
tmpView.textFieldChangedHandler = changeHandler
tmpView.isSecureTextEntry = isSecureTextEntry?.wrappedValue ?? false
tmpView.returnKeyType = returnKeyType
return tmpView
}
func updateUIView(_ uiView: WrappableTextField, context: UIViewRepresentableContext<SATextField>) {
if text != nil {
uiView.text = text
}
uiView.isSecureTextEntry = isSecureTextEntry?.wrappedValue ?? false
uiView.setContentHuggingPriority(.defaultHigh, for: .vertical)
uiView.setContentHuggingPriority(.fittingSizeLevel, for: .horizontal)
}
}
添加 .frame(width: ) 或 .frame(minWidth: , IdealWidth: , maxWidth: ) 根本没有帮助,或者带来其他错误,例如将视图向右移动。 SwiftUI 中的 ScrollView 示例
解决方案
推荐阅读
- javascript - vue.js 基本显示/隐藏在方法中
- java - 使用 POI 在 Java 中的 Excel 中的单元格右侧包含图像
- c++ - recv() 不等待传入消息
- jquery - jQuery DataTables - 修复有和没有滚动条的列宽
- javascript - 关闭嵌入在模式窗口中的 youtube 播放器
- typescript - 如何配置 Electron 以使用 TypeScript 的 baseUrl
- python - Django DRF - 不同的请求和响应序列化
- java - 如何在android中使用itextg 5.5.9在pdf中显示中文字符
- java - Spring external client timeout
- javascript - 没有名称的表单控件的值访问器 - Angular 5