我知道我可以使用文本视图,但在较小的iPhone上使用键盘很尴尬。它看起来很奇怪,能够在一个盒子里滚动和书写。
我希望有类似Twitter邮箱或Facebook邮箱或联系人(额外信息框)。一个随着用户写的更多而扩展的内容。
有人能指出我正确的方向吗?
由于
答案 0 :(得分:4)
首先,让你的视图控制器实现UITextViewDelegate,
class YourViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
...
}
在viewDidLoad方法中,设置delegete,
self.textView.delegate = self
最后,您应该实现textViewDidChange方法。
func textViewDidChange(textView: UITextView) {
let textViewFixedWidth: CGFloat = self.textView.frame.size.width
let newSize: CGSize = self.textView.sizeThatFits(CGSizeMake(textViewFixedWidth, CGFloat(MAXFLOAT)))
var newFrame: CGRect = self.textView.frame
var textViewYPosition = self.textView.frame.origin.y
var heightDifference = self.textView.frame.height - newSize.height
if (abs(heightDifference) > 20) {
newFrame.size = CGSizeMake(fmax(newSize.width, textViewFixedWidth), newSize.height)
newFrame.offset(dx: 0.0, dy: 0)
}
self.textView.frame = newFrame
}
答案 1 :(得分:0)
您只需要一个文本视图 - 每次文本更改时都会调整大小。我不确定swift,但是在obj-C上,覆盖-textViewDidChange
方法并使用以下方法调整大小:
#pragma mark - UITextViewDelegate
- (void)textViewDidChange:(UITextView *)textView {
[self resizeTextView];
}
- (void)resizeTextView {
[self.textView sizeToFit];
self.textView.frame = CGRectMake(self.textView.x, self.textView.y, __device_width, self.textView.h);
}
Swift中应该有类似的东西。