【发布时间】:2015-04-09 19:13:00
【问题描述】:
我有一个模板测验应用程序,它以各种形式在应用商店上架了一段时间,总的来说它收到了很好的评价并且没有错误报告。
最近我收到了两个错误报告,人们使用 iOS 8.1.2 或 8.1.3 的 iPad,说我用来显示问题的 UITextView 时不时地是空白的。
我无法复制此错误,但如果有人能对此有所了解,我将不胜感激。
questions 和 userAnswer 对象不是 nil,所以肯定是 UITextView 问题。
控制器在这里:
@interface ReviewController () @property(强,非原子)IBOutlet UITextView *输出; @结尾 @implementation ReviewController - (void)viewDidLoad { [超级视图DidLoad]; [自我 setReviewText]; // 加载视图后做任何额外的设置。 } -(无效)setReviewText{ NSArray* questions = [[NSArray alloc] init]; 问题 = [_manager getAllQuestions]; NSMutableArray* userAnswer = [[NSMutableArray alloc] init]; userAnswer = [self answersAttributed]; 如果(问题 == 无) _output.text = @"问题错误"; if (userAnswer == nil) { _output.text = @"错误"; } NSMutableAttributedString *mutableAttString = [[NSMutableAttributedString alloc] init]; 诠释 i = 0; NSAttributedString *linebreak =[[NSAttributedString alloc] initWithString:@"\n"]; 对于(问题中的问题* q) { if (i == [userAnswer count]) 休息; NSAttributedString *qtext =[[NSAttributedString alloc] initWithString:q.questionText]; NSAttributedString *ctext =[[NSAttributedString alloc] initWithString:@"正确答案:\n"]; NSAttributedString *atext =[[NSAttributedString alloc] initWithString:q.answerText]; NSAttributedString *ytext =[[NSAttributedString alloc] initWithString:@"你的答案:\n"]; NSAttributedString *utext =[[NSAttributedString alloc] initWithAttributedString:userAnswer[i]]; [mutableAttString appendAttributedString:qtext]; [mutableAttString appendAttributedString:linebreak]; [mutableAttString appendAttributedString:ctext]; [mutableAttString appendAttributedString:atext]; [mutableAttString appendAttributedString:linebreak]; [mutableAttString appendAttributedString:ytext]; [mutableAttString appendAttributedString:utext]; [mutableAttString appendAttributedString:linebreak]; [mutableAttString appendAttributedString:linebreak]; 我++; } NSAttributedString* outText = [[NSAttributedString alloc] init]; outText = [mutableAttString mutableCopy]; _output.attributedText = outText; [_output setFont:[UIFont preferredFontForTextStyle:UIFontTextStyleBody]]; } -(NSMutableArray*)answersAttributed { NSMutableArray* ansAtt = [[NSMutableArray alloc] init]; NSArray* questions = [[NSArray alloc] init]; 问题 = [_manager getAllQuestions]; NSArray* userAnswers = [[NSArray alloc] init]; userAnswers = [_manager getAllUserAnswers]; if ([questions count] != [userAnswers count]) { 返回 ansAtt; } 诠释 i = 0; for (NSString* userAnswer in userAnswers) { if([[questions[i] answerText] isEqualToString:userAnswer] ) { NSDictionary *attributes = @{NSBackgroundColorAttributeName:[UIColor greenColor]}; NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:userAnswer attributes:attributes]; [ansAtt addObject:attrString]; } 别的 { NSDictionary *attributes = @{NSBackgroundColorAttributeName:[UIColor redColor]}; NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:userAnswer attributes:attributes]; [ansAtt addObject:attrString]; } 我++; } 返回 ansAtt; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // 处理所有可以重新创建的资源。 } - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // 确保故事板中的 segue 名称与此行相同 if ([[segue identifier] isEqualToString:@"review2results"]) { // 获取目标视图控制器的引用 ReviewController *vc = [segue destinationViewController]; // 在这里将任何对象传递给视图控制器,例如... [vc setManager:_manager]; } }【问题讨论】:
-
您在使用自动布局吗?它可能与旋转有关 - 假设您在加载问题时旋转设备?
-
我正在使用 AutoLayout,但我将应用程序配置为仅在纵向模式下工作。有人说
UITextView大约有 50% 的时间没有出现,它们似乎不太可能每次都在旋转,但我会问。感谢您的建议。 -
是的,这听起来不太可能!
标签: ios objective-c iphone ipad