Проблема с обновлением приложения и UITextView

У меня есть приложение, в котором есть UITextView. Пользователь нажимает кнопку, и действие изменяет текст в UITextView. Приложение функциональное и находится в AppStore прямо сейчас, оно было создано с использованием iOS 4.2.

Ничего не меняя в коде. При тестировании новой версии приложения для iOS 6 приложение не будет отображать текст в UITextView при установке в симуляторе или на новом устройстве. UITextView пуст... но при использовании NSLog он записывает в журнал, что в UITextView есть текст.

Я заметил, что если на устройстве была установлена ​​предыдущая версия приложения, которое есть в AppStore. И я компилирую новую версию приложения на это устройство, приложение работает так, как предполагается, и UITextView обновляется при нажатии кнопки.

в моем файле .h

#import <UIKit/UIKit.h>


@interface TimeSheetViewController : UIViewController <UITextViewDelegate>
{

}

    @property(nonatomic, retain) IBOutlet UITextView *logTextView;

в моем файле .m

@synthesize logTextView;

    -(IBAction)buttonAction
    {   
        logTextView.text = [NSString stringWithFormat:@"%@ \n New words go here...", logTextView.text];
NSLog(@"%@", logTextView.text);
    }

Даже попытка установить текст из UITextView из Interface Builder не отображается, если только приложение не существует ранее, когда новая версия скомпилирована на устройстве.


person OscarTheGrouch    schedule 15.05.2013    source источник
comment
Цвет текста такой же, как фон UITextView? Если он правильно распечатывается в журнале, значит, текст существует.   -  person Sam    schedule 15.05.2013
comment
Вы проверили подключение UITextView в файле пера?   -  person Divyu    schedule 15.05.2013
comment
@ Сэм, фон синий, а текст черный. проблема странная, потому что, если приложение ранее было установлено из AppStore, то создание новой версии для iPhone работает, но если приложение встроено в iPhone без приложения, предварительно существовавшего на iPhone, оно не работает.   -  person OscarTheGrouch    schedule 15.05.2013
comment
@Divyu Я проверил, что он все еще подключен. проблема странная, потому что, если приложение ранее было установлено из AppStore, то создание новой версии для iPhone работает, но если приложение встроено в iPhone без приложения, предварительно существовавшего на iPhone, оно не работает.   -  person OscarTheGrouch    schedule 15.05.2013
comment
Это странно... должно быть что-то идет не так, может быть, вам следует создать новый файл пера и повторно использовать представление из предыдущего файла..   -  person Divyu    schedule 15.05.2013
comment
@Divyu Я взял последний рабочий проект (это версия в AppStore), использовал Xcode для проверки настроек проекта, изменил ОС развертывания с 4.2 на 6.1 и изменил базовый SDK на 6.1. Как только я делаю эти вещи, чтобы заставить его снова скомпилироваться, он начинает показывать странное поведение, если приложение ранее было установлено из AppStore, а затем создает новую версию для iPhone или работает симулятор, но если это приложение встроено в iPhone или симулятор без приложения, предварительно установленного на iPhone, не работает. Я даже не знаю, куда идти и что менять сейчас.   -  person OscarTheGrouch    schedule 16.05.2013
comment
@Oscar, попробуйте также запустить проект на 5.0, а затем проверьте, работает ли он нормально или нет ...   -  person Divyu    schedule 16.05.2013
comment
@Divyu Я пытался запустить проект как 5.0, и он все еще работает. Затем я отключил ARC для файла .m и запустил проект, но он все еще работает. Сегодня после работы попробую запустить из версии AppStore без проверки настроек проекта. Опубликую результаты.   -  person OscarTheGrouch    schedule 16.05.2013
comment
Попробуйте удалить метку и создать новую и восстановить соединения. Может быть, попробовать чистый проект для хорошей меры.   -  person Sam    schedule 16.05.2013
comment
@Sam Я попробовал твои предложения, но это тоже не сработало. Я думаю, что осталось попробовать только запустить новый проект и импортировать/скопировать и вставить все файлы и код в новый проект.   -  person OscarTheGrouch    schedule 17.05.2013


Ответы (3)


Попробуйте использовать метод setText текстового представления.

[logTextView setText:@" New words go here..."];

Если это не работает, проверьте, не установили ли вы textView как недоступный для редактирования, т.е. отключено взаимодействие с пользователем или что-то подобное в файле xib, если он у вас есть.

person prince    schedule 15.05.2013
comment
Я попробовал ваше предложение, оно не сработало. UITextView недоступен для редактирования, а взаимодействие с пользователем включено. Его нельзя редактировать, потому что я не хочу, чтобы пользователь печатал непосредственно в UITextView. проблема странная, потому что, если приложение ранее было установлено из AppStore, тогда создание новой версии для iPhone работает, но если приложение встроено в iPhone без приложения, предварительно существовавшего в AppStore на iPhone, оно не работает . - person OscarTheGrouch; 15.05.2013

Это только половинчатый ответ или точнее не решение... согласно

Техническое примечание TN2285: тестирование обновлений приложений iOS

Предупреждение. Не используйте Xcode для установки или запуска обновлений вашего приложения для проверки качества.

Чтобы ускорить цикл разработки, Xcode только отправляет измененные файлы в приложения, которые он запускает, и не удаляет файлы из существующих пакетов приложений. Это значительно ускоряет сборку. Но это означает, что использование Xcode для установки приложения поверх старой сборки может создать «frankenbuild» с устаревшими файлами, которых в противном случае у него не было бы. Это может вызвать проблемы во время тестирования и маскировать ошибки.

Кроме того, работа с Xcode будет маскировать «сбои сторожевого таймера», которые могут произойти, если запуск обновления занимает слишком много времени.

Я считаю, что происходит то, что какой-то файл остается из версии AppStore, когда я компилирую на него свою новую версию из Xcode .... заставляя ее работать так, как предполагается.

Но поскольку файл отсутствует в новой версии, скомпилированной из Xcode, любые новые установки приложения из невыпущенной будущей версии приложения не содержат этот конкретный файл и работают неправильно.

Я не совсем уверен, что это за файл, но я намерен изучить его подробнее или создать новый проект, скопировав и вставив в него старый код.

Тестирование приложения на многих устройствах и версиях iOS< /а>

person OscarTheGrouch    schedule 18.05.2013

Я использовал следующий код в методе viewDidLoad:

int fontSizeA = [(sizeLabel.text)intValue];
logTextView2.font=[UIFont fontWithName:@"Arial" size:fontSizeA];

Проблема, с которой я столкнулся, заключалась в том, что sizeLabel отключился в Interface Builder, и метод viewDidLoad действительно использовал этот код...

int fontSizeA = [(@"sizeLabel")intValue];
logTextView2.font=[UIFont fontWithName:@"Arial" size:fontSizeA];

что создавало впечатление, что в UITextView не было текста.

person OscarTheGrouch    schedule 25.05.2013
comment
Спасибо всем, кто просмотрел эту публикацию и помог мне пройти через это. - person OscarTheGrouch; 25.05.2013