У меня есть динамический UITableViewController с одной ячейкой прототипа. В этой ячейке находятся 2 UITextViews. Каждый из них должен быть доступен для редактирования. Если это имеет значение: данные поступают из json-файла и существуют в форме NSArray. (Я программирую в Swift, поэтому правильный тип - [[[String: String]]]). Моя проблема в том, что при нажатии на один из текстовых элементов iPad кажется загруженным несколько секунд, и за это время основной поток блокируется и ничего не происходит. Затем появляется клавиатура, и я могу редактировать текст. После выбора первого из TextViews я могу быстро переключаться между ними. Даже если TextView подаст в отставку свой первый ответчик, я могу нажать на один из них, и клавиатура открывается очень быстро. Как я могу закрепить загрузку в начале? Я пытался позвонитьUITextView реагирует очень медленно в UITableViewCell
myTextView.becomeFirstResponder()
в cellForRowAtIndexPah (только для первого TextView), а затем весь вид нагрузки, как 4-х секунд, прежде чем он показывает .. Я надеюсь, вы понимаете, что я имею в виду. Если вам нужен код, чтобы лучше понять его, дайте мне знать :)
Заранее благодарен!
EDIT # 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
}
}
(Sorry для некоторых немецких имен, они не являются важными для понимания кода, я думаю :)) Так что клетка имеет делегат, который мой TableViewController. И каждый из двух TextViews также имеет делегат, который является ячейкой. Поэтому, если TextViews меняет свою строку, я могу получить сообщение в своем TableViewController. Мне нужно это, чтобы сохранить изменения.
Это отдельная ячейка с уникальным идентификатором повторного использования? Мое единственное предположение, что могут быть несколько ячеек? Может помочь еще один код. – cdstamper
Это один прототип, который используется для нескольких ячеек, которые выглядят одинаково, но имеют разные тексты. – Ben
Хорошо, как вы получаете ссылку на этот текстовый вид? – cdstamper