【发布时间】:2021-04-29 05:09:54
【问题描述】:
我正在尝试根据 textview 内容高度与其他视图管理滚动视图高度。
代码:
struct TextviewWithScrollview: View {
@State private var textStyle = UIFont.TextStyle.body
@State private var textForTextView = "fdgfhjdsgfdhsgfdsfg dsfg dsfgdsfh fh sf hdsjklf dhsjkfhsdjkfdhsjkfadhsfkds fdshfjkldsh fjkldsh fdshfdshfdsfhsfdsfh sf ewf g iuf herjkdsjkjvdhsvdshvdsv dshv ds vads vds hvsdvjkds vds hviuds vhv disu ghdisuv g"
var body: some View {
ZStack {
Color.red
.ignoresSafeArea()
ScrollView {
VStack(alignment: .leading) {
TextView(isEditable: .constant(false), text: .constant(textForTextView), textStyle:$textStyle, didStartEditing: .constant(false),placeHolderText:"")
}
HStack {
Button("Top") {
}
Button("Middle") {
}
Button("Bottom") {
}
}
}
}
}
}
struct TextView: UIViewRepresentable {
@Binding var isEditable:Bool
@Binding var text: String
@Binding var textStyle: UIFont.TextStyle
@Binding var didStartEditing: Bool
var placeHolderText: String = ""
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.delegate = context.coordinator
textView.font = UIFont.preferredFont(forTextStyle: textStyle)
textView.autocapitalizationType = .sentences
textView.isSelectable = true
textView.isUserInteractionEnabled = true
textView.isScrollEnabled = true
textView.dataDetectorTypes = .all
textView.textColor = .white
return textView
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.text = text
uiView.font = UIFont.preferredFont(forTextStyle: textStyle)
}
func makeCoordinator() -> Coordinator {
Coordinator($text)
}
class Coordinator: NSObject, UITextViewDelegate {
var text: Binding<String>
init(_ text: Binding<String>) {
self.text = text
}
func textViewDidChange(_ textView: UITextView) {
DispatchQueue.main.async {
self.text.wrappedValue = textView.text
}
}
}
}
不带滚动视图的输出:
滚动视图输出:
有人可以向我解释如何根据 textview 内容和其他人的观点来管理 Scrollview 高度。我已经尝试按照上面的方法实现,但还没有结果。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
顺便说一句,如果你不需要支持 iOS 13,你应该使用TextEditor
-
不太清楚你想要实现什么。如果文本超出屏幕怎么办?按钮应该始终在屏幕上吗?在中心?为什么要使用 UITextView,这是必需的限制吗?您能否详细说明目标。
-
@Asperi 我的目标是使用 textview 和其他视图进行全屏滚动。因为当我使用带有滚动视图的文本视图时,文本视图无法正常工作,但是当我不使用滚动视图时,文本视图工作正常,但其他视图滚动关闭。那么你能帮我如何用textview实现全屏滚动视图吗?
-
@aheze 但在 TextEditor 中不支持突出显示 url。
-
是否可以管理滚动视图高度? @Asperi
标签: swiftui textview uiscrollview scrollview