SwiftUI ScrollView中的TextField无法监听拼音输入的问题
SwiftUI ScrollView中的TextField无法监听拼音输入的问题

SwiftUI ScrollView中的TextField无法监听拼音输入的问题

SwiftUI Mac项目下, TextField默认跟随拼音输入,输入的每一个拼音都会显示在TextField的尾部。

如果外面嵌套ScrollView,TextField就无法跟随拼音输入,类似被截断效果。

问题原因可能是因为ScrollView拉长了TextField,导致输入的拼音出现截断效果。

解决方案:使用Combine监听文本框的输入状态,当输入文本时,ScrollView滚动到尾部。

TextField(
    "",
    text: $text
)
.onReceive(NotificationCenter.default.publisher(for: NSTextView.didChangeSelectionNotification)) { obj in
    if let textView = obj.object as? NSTextView {
        print("macOS: 正在输入拼音 (Marked Text)...")
        scrollToEnd(proxy)
    }
}

注意,这里配合ScrollViewReader和ScrollView实现滚动到尾部的效果。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注