Вопрос:

Программно созданные ярлыки и изображения не отображаются на экране

iphone uiscrollview autoscroll

329 просмотра

1 ответ

1139 Репутация автора

У меня есть следующее приложение, похожее на чат, поэтому я программно создаю некоторые ярлыки, изображения и кнопки.
Проблема в том, что те, которые я добавляю при запуске, показывают, а те, которые я добавляю, нет.
Это как представление нуждается в обновлении или что-то. Если я вызываю ту же функцию рисования из IBAction, установленного для кнопки ... он отображает содержимое ... если оно происходит из события потока, которое ищет новые события и уведомляет класс через:

[[NSNotificationCenter defaultCenter] postNotificationName:@"NewMessageNotification" object:self userInfo:values];  

тогда он ничего не показывает. Но функция на самом деле вызывается (я проверил с помощью отладчика) Может ли быть так, что она не использует правильный экземпляр представления?

вот мой макет:

введите описание изображения здесь

и вот моя функция, которая создает элементы управления:

    UILabel *labelMessage = [[UILabel alloc] initWithFrame:CGRectMake(left+5, lastcalculatedHeight-5, 220, calculatedHeight)];           
    [labelMessage setText:msg];
    [labelMessage setFont:[UIFont fontWithName:@"Arial" size:12.0]];
    [labelMessage setLineBreakMode:UILineBreakModeWordWrap];
    [labelMessage setTextColor:[UIColor blackColor]];
    [labelMessage setAdjustsFontSizeToFitWidth:NO];
    [labelMessage setNumberOfLines:floor( msg.length / 40 )+2];
    [labelMessage setBackgroundColor:[UIColor clearColor]];
    [scrollView addSubview:labelMessage];
    [labelMessage release];


    UIButton *buttonTime = [[UIButton alloc] initWithFrame:CGRectMake(left, lastcalculatedHeight+40, 50, 20)];  
    [buttonTime setBackgroundImage:[[UIImage imageNamed:@"hour_bubble.png"] stretchableImageWithLeftCapWidth:9 topCapHeight:13] forState:UIControlStateDisabled];
    [buttonTime setFrame:CGRectMake(left_hour_button, lastcalculatedHeight+calculatedHeight-30, 55, 25)];
    [buttonTime setTitle:date2 forState:UIControlStateDisabled];                
    [buttonTime setTitleColor:[UIColor blackColor] forState:UIControlStateDisabled];
    buttonTime.titleLabel.font=[UIFont fontWithName:@"Helvetica" size:8.0]; 
    buttonTime.titleLabel.lineBreakMode= UILineBreakModeWordWrap;
    [buttonTime setEnabled:FALSE];
    [scrollView addSubview:buttonTime];
    [buttonTime release];

Я также хочу автоматически прокрутить uiscrollview к основанию, когда я вызываю эту функцию ... но она не работает, как будто симулятор сходит с ума, когда я вызываю следующее: я пытался использовать

CGPoint offset = CGPointMake(0,lastcalculatedHeight);
[scrollView setContentOffset: offset animated: YES];

Я получил это из прокрутки UIScrollView вниз программно

Автор: PartySoft Источник Размещён: 23.03.2011 05:18

Ответы (1)


0 плюса

76308 Репутация автора

Решение

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

Автор: Anomie Размещён: 26.03.2011 07:01
Вопросы из категории :
32x32