UITextView: текст появляется только после того, как я его вручную переместил - PullRequest
0 голосов
/ 04 октября 2011

У меня есть очень любопытный случай (похожий на этот ):

У меня есть простой UITextView, который находится в UIView, который я загружаю программно (NIB).Содержимое загружается из файла TXT в UITextView.text.Это происходит в viewDidLoad.

Все хорошо, если мой текст состоит всего из нескольких строк и если нет необходимости в прокрутке.Однако, если текст длиннее, чем UITextView, он не будет отображаться.Только если я коснусь экрана и попытаюсь прокрутить, текст внезапно всплывет.

Я попробовал это подтолкнуть, чтобы текст появился в viewDidLoad:

textView.contentOffset = CGPointMake(0.0, 1.0);
textView.contentOffset = CGPointMake(0.0, 0.0);

Но он выигралт работа.Я также убедился, что позвонил [super viewWillAppear] и т. Д., Но опять же, не повезло.Единственное, что немного помогает, - это если я инициирую свое представление и загружаю текст в viewDidAppear.Тем не менее, последняя часть UITextView по-прежнему не отображается, если я не прокручиваю.

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

РЕДАКТИРОВАТЬ:

Теперь я знаю, что вызывает это странное поведение, но я до сих пор не знаю, почему это может быть.ViewController, в котором будет отображаться PageView, анимируется в виде (простой блок анимации для перемещения viewController на экран).Если убрать анимацию, все нормально.Я понятия не имею, почему.

Вот немного больше кода (не уверен, поможет ли это прояснить).Это viewController, где я инициализирую представление.

- (void)viewDidLoad {

    [super viewDidLoad];

    if (self.currentPageView == nil) {

        NSLog(@"createPage...");
        PageView *cpv = [[PageView alloc] init];
        self.currentPageView = cpv;
        [cpv release];

        [self.view addSubview:currentPageView.view];

    }    

    [self loadContentsFromTXTFile];

    [currentPageView setTitle:title
                         date:date
                         text:text ];

}

Это инициализация класса PageView:

    -(id)init {

    //self = [super initWithNibName:nil bundle:nil];
    self = [super initWithFrame:CGRectZero];

    if (self) {

        [[NSBundle mainBundle] loadNibNamed:@"PageView" owner:self options:nil];
        [self addSubview:self.view];    

    }

    return self;

}

-(void)setTitle:(NSString *)title date:(NSString *)date text:(NSString *)text {

    UILabel *mytitle = [self titleOfPage];
    [mytitle setText:title];

    UILabel *mydate = [self dateOfPage];
    [mydate setText:date];

    UITextView *mytext = [self textOfPage];
    [mytext setText:text];


}

1 Ответ

0 голосов
/ 05 октября 2011

Хорошо, я решил эту проблему, просто используя UINavigationController для обработки представлений, в которых был обнаружен проблемный UITextView. Я до сих пор не понимаю, почему это вызвало проблемы, но если вы столкнулись с этой проблемой, возможно, что-то не так со структурой ваших UIViewControllers и тем, как они обновляют (или не обновляют) UITextView.

...