首页 > 解决方案 > 防止自定义大小的 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
  }

标签: iosswiftuitextviewswift5uitextviewdelegate

解决方案


一个简单的解决方案是给 textView 一个高度约束。将 textView 的 isScrollEnabled 属性设置为 false。让它增长直到它到达键盘原点(你必须以编程方式检查它)。一旦到达键盘原点,固定高度并将 isScrollEnabled 属性设置为 true


推荐阅读