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
并在传递forwardNoteSegue
后使用该内容填充我的tableView(这是一个表单,包含)时使用segue self.forwardObject
传递该变量textViews和TextFields)但是当我这样做时,我的textView
并没有根据textView中的内容增加它的高度,
我想要的是当我们使用“textView.text = copiedContent”时textView应该增加它的高度,就像我们手动输入任何东西时一样
请正确理解我的问题,看看上传的视频(链接在上面提供)
如果我的问题不明白,请告诉我,我会解决它
谢谢
答案 0 :(得分:0)
当您以编程方式修改textview的内容时,需要手动调用textViewDidChange。
这在UITextviewDelegate的方法描述中有记载:
文本视图调用此方法以响应用户启动的文本更改。不响应此方法调用此方法 以编程方式启动的更改。