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/