You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI:如何让TextField完全不可编辑但保留滚动触摸功能

解决方案

要实现可滚动但完全不可编辑的TextField,核心是用readOnly(true)替代disabled(true),同时结合行限制设置:

关键代码示例

TextField("展示文本", text: .constant("这里是超长文本内容,当长度超过设置的行限制时,TextField会自动允许滚动查看全部内容,不会截断文本"))
    .lineLimit(2) // 设置允许显示的最大行数,超过则触发滚动
    .readOnly(true)

方案说明

  • readOnly(true):仅禁用文本编辑功能,保留TextField的滚动、文本选中(如果需要)等交互能力,不会像disabled(true)那样完全锁死所有交互。
  • 绑定constant文本+readOnly:彻底阻断用户输入操作,不会出现“能输入一个字符后消失”的问题,因为输入框根本不会响应输入事件。

如果需要进一步优化视觉反馈(比如让输入框看起来更像纯文本展示),可以额外添加样式调整:

TextField("展示文本", text: .constant("超长示例文本"))
    .lineLimit(2)
    .readOnly(true)
    .background(Color.clear) // 移除输入框背景
    .disabled(false) // 保持交互状态,确保滚动正常

内容的提问来源于stack exchange,提问作者janineanne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:04:56