func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
let fixedWidth: CGFloat = textView.frame.size.width
let newSize: CGSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
delegate.updateHeightTextView(height: newSize.height)
return true
}
我在上面的函数中计算textview的高度。当我输入一些文本时,它工作得很好,但是当我复制和粘贴文本时,它不正确。
4条答案
按热度按时间fnvucqvd1#
在本例中,只要TextView文本发生更改,就必须计算TextView的高度。
UITextViewTextDidChangeNotification
bxjv4tth2#
您可以选择不同的方法来更改高度。
最简单的方法是设置:
或
取消勾选
情节提要
上的textview属性
在这里,文本视图的高度将根据内容而变化。
另一种方法是在textView委托方法中计算高度
qyswt5oh3#
我找到了解决办法。而不是在
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
中计算高度textview我在- (void)textViewDidChangeSelection:(UITextView *)textView;
中计算它如果我在
textViewDidChange
中计算,如果我首先键入第一个字符或粘贴一些文本,则不会调用它。wh6knrhe4#
方法
sizeThatFits
从复制、粘贴、删除所选文本返回正确的大小。