ios - 将字符串填充到 textView 时出现问题

标签 ios swift textview swift2

uploaded video (7 sec) for describing my problem

我在 tableView 单元格中嵌入了一个 textView,当我们在该 textView 上输入内容时,textview 会根据输入的内容自动增加其高度,并且单元格也会增加其大小,为此我使用以下方法: -

//tableViewCell

/// Custom setter so we can initialise the height of the text view
var textString: String {
    get {
        return textView?.text ?? ""
    }
    set {
        if let textView = textView {
            textView.text = newValue

            textViewDidChange(textView)
        }
    }
}



    override func awakeFromNib() {
    super.awakeFromNib()



    // Disable scrolling inside the text view so we enlarge to fitted size
    textView?.scrollEnabled = false
    textView?.delegate = self



}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    if selected {
        textView?.becomeFirstResponder()
    } else {
        textView?.resignFirstResponder()
    }
}
}

  extension MultiLineTextInputTableViewCell: UITextViewDelegate {
 func textViewDidChange(textView: UITextView) {

    let size = textView.bounds.size
    let newSize = textView.sizeThatFits(CGSize(width: size.width, height: CGFloat.max))

    // Resize the cell only when cell's size is changed
    if size.height != newSize.height {
        UIView.setAnimationsEnabled(false)
        tableView?.beginUpdates()
        tableView?.endUpdates()
        UIView.setAnimationsEnabled(true)

        if let thisIndexPath = tableView?.indexPathForCell(self) {
            tableView?.scrollToRowAtIndexPath(thisIndexPath, atScrollPosition: .Bottom, animated: false)
        }
    }
}

这里一切都很好,但我添加了一个转发任何内容的功能,为此我使用了这种方法:-

 forwardNoteAction = UITableViewRowAction(style: .Normal, title: "Forward"){ action, index in
            let cell = tableView.cellForRowAtIndexPath(indexPath) as! NotesTableViewCell

                if self.searchBar.text == "" {


                    let object: PFObject = self.noteObjects.objectAtIndex(indexPath.row) as! PFObject
                    let postsObjID = object.objectId!
                    let query = PFQuery(className: "Notes")
                    query.fromLocalDatastore()

                    query.getObjectInBackgroundWithId(postsObjID) {
                        (objectViewes, error) -> Void in
                        if error != nil {
                            print(error)
                        } else {


                            self.forwardObject = object
                            print(self.forwardObject)
                            //object.pinInBackground()

                self.performSegueWithIdentifier("forwardNoteSegue", sender: nil)
                self.tableView.deselectRowAtIndexPath(indexPath, animated: true)


                        }

我将内容放入变量self.forwardObject中,并在传递self.forwardObject之后使用segue forwardNoteSegue传递该变量用于填充我的 tableView 的内容(这是一个表单,由 textView 和 TextField 组成),但是当我这样做时,我的 textView 不会根据该 textView 内的内容增加其高度,

我想要的是,当我们使用“textView.text = CopyContent”时,textView 应该增加其高度,与我们手动在 textView 中输入任何内容时相同

为了正确理解我的问题,请查看上传的视频(上面提供了链接)

如果我的问题无法理解,请告诉我,我会解决它

谢谢

最佳答案

当您以编程方式修改textview的内容时,您需要手动调用textViewDidChange。

这记录在 UITextviewDelegate 的方法描述中:

The text view calls this method in response to user-initiated changes to the text. This method is not called in response to programmatically initiated changes.

关于ios - 将字符串填充到 textView 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689725/

相关文章:

ios - 如何使用 swift iOS(不使用 UITextView)进行多行扩展 UTextField 或文本输入

android : html list view not working in the string. xml 文件

iphone - 如何修复 "unrecognized selector sent to instance"

ios - 从 TabBarController 设置导航 Controller 参数

ios - 隐藏 View 并应用隐藏效果 - Swift

iOS SpringBoard 不加载通知服务扩展

iOS Swift Twilio 可编程聊天推送通知

java - Android - 我如何记住是否单击了按钮?

iOS 键盘阻碍了 TextView 中的编辑文本

iphone - iOS SDK 中的视频调用 API?