Сбой приложения при добавлении UITextview [длина UITextView]: в экземпляр отправлен нераспознанный селектор

У меня очень странная проблема с чем-то, что, вероятно, легко решить, но я не могу заставить ее работать. Я хочу добавить UITextview к UITableViewCell (но я пробовал это и в простом представлении, у меня точно такая же проблема). Независимо от того, делаю ли я это в раскадровке или программно, приложение вылетает (иногда только во второй раз, когда отображается представление!) с сообщением

-[Длина UITextView]: нераспознанный селектор отправлен экземпляру ‹...>

Здесь я добавляю UITextViewCellForRowAtIndexPath:). @property UITextView *description, которому я его назначаю, который был синтезирован.

    //description cell
if([indexPath section] == 2 && [indexPath row] == 0) {
    UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(7.0f, 5.0f, 285.0f, 140.0f)];
    textView.editable = YES;
    textView.delegate = self;
    textView.backgroundColor = [UIColor clearColor];
    textView.font = [UIFont systemFontOfSize:14.0f];
    [cell.contentView addSubview:textView];
    self.description = textView;
}

Пожалуйста, дайте мне знать, если вам нужно больше кода. Заранее спасибо!


person user1477761    schedule 24.06.2012    source источник
comment
Попробуйте переименовать свойство описания. Каждый подкласс NSObject имеет метод описания из NSObject - возможно, это вызывает проблему   -  person Pfitz    schedule 24.06.2012
comment
Я думаю, что проблема в другой части кода. Вот это выглядит нормально. Возможно ли, что вы пытаетесь где-то получить текст self.description, но обрабатываете его как строку, а не текстовое представление?   -  person Accatyyc    schedule 24.06.2012
comment
@Accatyyc, я нигде не использую self.description.text, я закомментировал эту строку, и приложение все равно вылетает.   -  person user1477761    schedule 24.06.2012
comment
@Pfitz спасибо, что указали на это! К сожалению, у меня нет доступа к моему Mac до вторника, но я попробую это сделать и опубликую, если сработает.   -  person user1477761    schedule 24.06.2012
comment
вот почему я не сделал это ответом;) но, возможно, у вас возникнут проблемы в противном случае - вам разрешено переопределять его, но он должен возвращать NSString.   -  person Pfitz    schedule 24.06.2012
comment
Спасибо, как только я переименовал свойство описания во что-то другое, это сработало!   -  person user1477761    schedule 26.06.2012


Ответы (2)


UITextView не имеет длины свойства. Если вы попытаетесь получить доступ к длине текста в UITextView, используйте его текст свойства, чтобы получить NSString, где вы можете использовать текстовый метод. Например.

[[textView text] length];

Но поскольку я думаю, что вас в основном интересует форма NSString, просто используйте UITextView

[textView text]
person Pfitz    schedule 24.06.2012
comment
да, но в том-то и дело - я нигде не называю длину, во всяком случае, явно. У вас есть идея, когда это можно было бы вызвать неявно? - person user1477761; 24.06.2012
comment
взгляните на трассировку стека с левой стороны, функция которой вызывает метод длины. - person Pfitz; 24.06.2012

Неверная строка self.description = textView;. Вместо этого используйте self.description = textView.text;.

person onegray    schedule 25.06.2012
comment
Проблема заключалась в том, как правильно указал @Pfitz, что я использовал свое свойство описания для хранения в нем UITextView. Как только я переименовал его во что-то другое, это сработало. - person user1477761; 26.06.2012