2013-03-21 4 views
0

Я использую xcode 4.6 для разработки приложения. Здесь я хочу добавить UIButton программно в UIscrollview. Это следующий код.Пользовательский UIButton в UIscrollview

UIButton *bt =[[UIButton alloc]initWithFrame:frame]; 
bt=[UIButton buttonWithType:UIButtonTypeCustom]; 
[bt setTitle:@"Custom Button" forState:UIControlStateNormal]; 
[bt addTarget:self action:@selector(userTappedOnLink:) forControlEvents:UIControlEventTouchUpInside]; 
bt.backgroundColor = [UIColor grayColor]; 
bt.titleLabel.textColor=[UIColor blueColor]; 
[self.mainscrollview addSubview:bt]; 
[self.mainscrollview bringSubviewToFront:bt]; 

В настоящее время проблема в том, что кнопка исчезает (технически ее цвет текста становится белым) при нажатии. Я проверил, сохраняя цвет UIscrollview красным, что эта кнопка все еще была в представлении, но я не могу понять причину, по которой изменился его цвет текста и как я его отменил. В основном я хотел создать интерактивную ссылку с помощью UIbutton. Я знаю подход uitextview (datadetectortype), но его бесполезно, поскольку я хочу показать другой текст в метке для ссылки и фактической ссылки.

Примечание: Цвет текста не меняется на синий и остается только белым.

Заранее спасибо.

ответ

2

Попробуйте приведенный ниже код

UIButton *bt =[UIButton buttonWithType:UIButtonTypeCustom]; 
bt.frame = CGRectMake(50.0, 50.0, 100.0, 50.0); 
[bt setTitle:@"Custom Button" forState:UIControlStateNormal]; 
[bt addTarget:self action:@selector(userTappedOnLink:) forControlEvents:UIControlEventTouchUpInside]; 
bt.backgroundColor = [UIColor grayColor]; 
bt.titleLabel.textColor=[UIColor blueColor]; 
[self.scrollTest addSubview:bt]; 

-(void)userTappedOnLink:(UIButton*)sender 
{ 
    NSLog(@"Test .."); 

    [self performSelector:@selector(changeBtnTextColor:) withObject:sender afterDelay:1.0]; 
} 

-(void)changeBtnTextColor:(UIButton*)btn 
{ 
    btn.titleLabel.textColor=[UIColor blueColor]; 
} 

надеюсь, что это будет работать для вас.

+0

Thanx for ur answer .. это была помощь gr8! Теперь все работает отлично. – xrnd

0

Используйте следующий код:

[bt setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 

Проблема вы установить право собственности на titleLabel и вы меняете TextColor цвета buttonTitle.

Все самое лучшее !!!

0

проверка флага кнопки. Действительно ли это или нет? и удалите bt=[UIButton buttonWithType:UIButtonTypeCustom]; строку с вашего кода.

2

использование ниже кода вы получите ваше решение

UIButton *bt =[[UIButton alloc]initWithFrame:frame]; 
bt=[UIButton buttonWithType:UIButtonTypeCustom]; 
[bt setTitle:@"Custom Button" forState:UIControlStateNormal]; 
[bt addTarget:self action:@selector(userTappedOnLink:) forControlEvents:UIControlEventTouchUpInside]; 
[bt setBackgroundColor:[UIColor grayColor]]; 
[bt setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 
[self.mainscrollview addSubview:bt]; 
[self.mainscrollview bringSubviewToFront:bt]; 
+0

Ну, ваш код работал нормально, если я держу кнопку как обычно, а не обычай. Но теперь, когда я нажимаю кнопку, вызывается событие, но нет визуального ощущения, что кнопка нажата. – xrnd

+0

затем укажите другой цвет для названия как UIControlStateHighlighted [bt setTitleColor: [UIColor redColor] UIControlStateHighlighted]; – Pratik

+0

В этом случае цвет всегда остается синим. но я снова изменил цвет в вызываемой функции этой кнопки и дал эффект щелчка при нажатии кнопки. – xrnd