Проблем с актуализирането на приложението и 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 в nib файла?   -  person Divyu    schedule 15.05.2013
comment
@Sam фонът е син, а текстът е черен. проблемът е странен, защото ако приложението е инсталирано преди това от AppStore, тогава компилирането на новата версия на iPhone работи, но ако приложението е изградено на iPhone, без приложението да съществува предварително на iPhone, то не работи.   -  person OscarTheGrouch    schedule 15.05.2013
comment
@Divyu Проверих дали все още е свързан. проблемът е странен, защото ако приложението е инсталирано преди това от AppStore, тогава компилирането на новата версия на iPhone работи, но ако приложението е изградено на iPhone, без приложението да съществува предварително на iPhone, то не работи.   -  person OscarTheGrouch    schedule 15.05.2013
comment
Странно е.. трябва да има нещо, което се обърка, може би трябва да създадете нов nib файл и да използвате отново изгледа от предишния файл..   -  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