ios - 防止自定义大小的 UITextView 增长超过某个点(例如键盘顶部锚点)
问题描述
*我有一个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
}
解决方案
一个简单的解决方案是给 textView 一个高度约束。将 textView 的 isScrollEnabled 属性设置为 false。让它增长直到它到达键盘原点(你必须以编程方式检查它)。一旦到达键盘原点,固定高度并将 isScrollEnabled 属性设置为 true
推荐阅读
- python - 如何使用 Python 获取第一个 8 位 CUSIP(compustat 数据库)?
- azure - 如何配置 google 域以指向 Azure webapp
- ruby - 如何使红宝石在二进制函数之前指示错误?
- python - 无法在python中打开文件
- javascript - 平滑滚动到元素时如何在没有jquery的情况下控制滚动时间?
- azure - azure VPN 无法在 Windows Server 2012 上运行
- python - 我可以在 pyglet 中使用归一化坐标进行绘制吗?
- java - 对嵌套数组列表结构的迭代显示出意外的结果
- for-loop - 如何让此代码仅复制与我的对象匹配条件匹配的行?目前如果复制每一行
- c# - 如何在 C# 中制作一个列表框在按钮单击时不重复项目?