UITextView在UITableViewCell中响应非常慢

时间:2014-12-11 14:53:33

标签: ios uitableview swift

我有一个带有一个原型单元的动态UITableViewController。在这个单元格中有2个UITextViews。每个都应该是可编辑的。如果这很重要:数据来自json文件并以NSArray的形式存在。 (我在Swift中编程,所以正确的类型是[[[String:String]]])。 我的问题是,当我点击其中一个TextView时,iPad似乎加载了几秒钟,在此期间主线程被阻止,没有任何反应。然后键盘弹出,我可以编辑文本。选择第一个TextView后,我可以在它们之间快速切换。即使TextView重新启动了他的第一个响应者,我也可以点击其中一个,键盘打开得非常快。 我怎样才能在开始时加紧装载? 我试着打电话给

myTextView.becomeFirstResponder()

在cellForRowAtIndexPah中(仅适用于第一个TextView),然后整个视图在显示之前加载4秒钟。 我希望你明白我的意思。如果您需要任何代码来更好地理解它,请告诉我:)

提前致谢!

编辑#1:

自定义类

class BeschreibungZusatzCell: UITableViewCell, UITextViewDelegate {

    var delegate: CellDelegate?

    @IBOutlet weak var titelTextView: CellTextView!

    @IBOutlet weak var beschreibungTextView: CellTextView!

    override func layoutSubviews() {
        super.layoutSubviews()
        if titelTextView != nil {
            titelTextView.delegate = self
        }
        if beschreibungTextView != nil {
            beschreibungTextView.delegate = self
        }

    }

    var titel: String! {
        didSet{
            titelTextView.text = titel
        }
    }

    var beschreibung: String! {
        didSet{
            beschreibungTextView.text = beschreibung
        }
    }


    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
        if text == "\n" {
            textView.resignFirstResponder()
            delegate?.cell(self, didChangeContentAtIndexPath: (textView as CellTextView).indexPath!, andSpalte: (textView as CellTextView).spalte!, toString: textView.text)
            return false
        }
        delegate?.cell(self, didChangeContentAtIndexPath: (textView as CellTextView).indexPath!, andSpalte: (textView as CellTextView).spalte!, toString: textView.text)
        return true
    }

}

(对不起一些德语名称,他们理解我认为的代码并不重要:))所以单元格有一个委托,这是我的TableViewController。并且两个TextView中的每一个都有一个委托,也就是单元格。因此,如果TextViews更改了它们的字符串,我可以在TableViewController中获取一条消息。我需要它来保存更改。

1 个答案:

答案 0 :(得分:0)

becomeFirstResponder来电转移到didEndDisplayingCell或其他方法。 cellForRowAtIndexPath用于配置您的单元格,而不是用于执行与UI相关的任务。