如何让用户输入多行文字Swift(喜欢Facebook或Twitter帖子)

时间:2015-06-23 18:24:37

标签: ios swift

我知道我可以使用文本视图,但在较小的iPhone上使用键盘很尴尬。它看起来很奇怪,能够在一个盒子里滚动和书写。

我希望有类似Twitter邮箱或Facebook邮箱或联系人(额外信息框)。一个随着用户写的更多而扩展的内容。

有人能指出我正确的方向吗?

由于

2 个答案:

答案 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中应该有类似的东西。