Недавно я столкнулся с еще одной проблемой Iphone.
Я создаю мелодраматически некоторые элементы управления, и они не появляются, для этого нужен какой-то метод обновления.
вот мой макет:
это чат, и все эти сообщения я создаю им динамически по мере появления события,
то, что я создаю при запуске, оно появляется, но то, что я создаю позже, не отображается, даже если код в порядке,
вот как я создаю элементы управления (вызывая следующую функцию):
- (void) AddNewMessage: (NSString *)msg date1:(NSString* ) date2 {
NSString *backimage =[NSString stringWithString:@""];
NSString *who =[NSString stringWithString:@"1"];
calculatedHeight=floor( msg.length / 40 )*20;
if (calculatedHeight<30) calculatedHeight=30;
if ([who isEqualToString:@"1"]) {
left=85;
left_hour_button=25;
backimage=@"green_bubble.png";
}
else {
left=5;
left_hour_button=240;
backimage=@"grey_bubble.png";
}
UIButton *button1 = [[UIButton alloc] initWithFrame:CGRectMake(left, lastcalculatedHeight-10, 230, calculatedHeight+10)];
[button1 setBackgroundImage:[[UIImage imageNamed:backimage] stretchableImageWithLeftCapWidth:9 topCapHeight:13] forState:UIControlStateDisabled];
[button1 setEnabled:FALSE];
[scrollView addSubview:button1];
[button1 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];
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];
lastcalculatedHeight+=calculatedHeight+20;
totalHeight+=calculatedHeight;
scrollView.contentSize = CGSizeMake(240, lastcalculatedHeight);
}
Может кто-нибудь подсказать, как "обновить" дисплей?
scrollView - это объект внутри Uiview, из которого происходит класс
Также я хочу прокрутить вниз прокрутку вниз, каждый раз, когда добавляю новое сообщение.
Я видел этот пост , но иногда он не работает, или он действует странно на симуляторе ...
еще не пробовал на устройстве, потому что у меня нет iphone ..
он прокручивает слишком много или вообще, но если я перехожу на другую вкладку, затем переключаюсь назад, прокрутка прокручивается внизу и даже показывает элементы управления, которые я создал программно ...
Странно, не правда ли?