防止自定义大小的 UITextView 增长超过某个点(例如键盘顶部锚点)
Posted
技术标签:
【中文标题】防止自定义大小的 UITextView 增长超过某个点(例如键盘顶部锚点)【英文标题】:Prevent self-sizing UITextView from growing past certain point (keyboard top anchor, e.g.) 【发布时间】:2021-08-07 07:45:37 【问题描述】:*我有一个UITextView,它会根据用户的文本输入自动增长。 我想防止 UITextView 的底部锚点进入键盘下方,或者我想在用户输入文本时自动滚动视图本身,这使得 textview 超过键盘顶部(如果您愿意,请进入键盘下方),以便在输入时可以显示他们正在输入的视图。关于如何解决这个问题的任何建议?我应该在我正在执行此操作的视图控制器中配置滚动视图吗?
我目前的代码是这样的:
let textView: CustomTextView =
///Set bio Box text view:
let field = CustomTextView()
field.textColor = .label
field.layer.borderWidth = 1
field.layer.cornerRadius = 10
field.font = Fonts.createSize(14)
field.keyboardAppearance = .default
field.tintColor = Colors.mainBrandColor
field.placeholderLabel.text = "Tell us about yourself..."
field.layer.borderColor = UIColor(named: "customTopColorControl")?.cgColor
field.translatesAutoresizingMaskIntoConstraints = true
field.sizeToFit()
field.isScrollEnabled = false
return field
()
///Setup text view:
func setupTextView()
addSubview(textView)
textView.anchor(
top: titleLabel.bottomAnchor,
left: leftAnchor,
bottom: inputAccessoryView?.topAnchor,
right: rightAnchor,
paddingTop: 20,
paddingLeft: 20,
paddingBottom: 0,
paddingRight: 20,
width: 0,
height: 0)
///Adjusts the textview to fit the size of the text within it:
func adjustUITextViewHeight(textView: UITextView)
textView.translatesAutoresizingMaskIntoConstraints = true
textView.sizeToFit()
textView.isScrollEnabled = false
【问题讨论】:
我说的是 UITextView 与 UIScrollView。例如将 UITextView 放置在自定义视图中,位于 UIScrollView 之上。 情侣笔记... 1) 发布无需编辑即可编译的代码。我们不知道您的CustomTextView
/ Fonts.createSize(14)
/ Colors.mainBrandColor
/ 等在做什么。 2) 更详细地描述你正在尝试做的事情。 3) 如果可能,请使用图片来阐明您的目标以及您在完成方面遇到的困难。
一个简单的解决方案是给 textView 一个高度约束。将 textView 的 isScrollEnabled 属性设置为 false。让它增长直到它到达键盘原点(你必须以编程方式检查)。一旦到达键盘原点,固定高度并将 isScrollEnabled 属性设置为 true。
@AkilanCB - 您可以将此添加为答案,以便我投票并接受它吗?谢谢,成功了。
@CV3,是的,永远欢迎。
【参考方案1】:
一个简单的解决方案是给 textView 一个高度约束。将 textView 的 isScrollEnabled 属性设置为 false。让它增长直到它到达键盘原点(你必须以编程方式检查)。到达键盘原点后,将高度固定并将 isScrollEnabled 属性设置为 true
【讨论】:
如何以编程方式检查键盘原点?以上是关于防止自定义大小的 UITextView 增长超过某个点(例如键盘顶部锚点)的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionViewCell里面的UITextView坚持横向增长
通过 UITextView 内容大小调整 UITableView 单元格的大小