2010-04-07 2 views
0
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 180, 180)]; 
myLabel.backgroundColor = [UIColor greenColor]; 
[self.view addSubview:myLabel]; 

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[self addTarget:self action:@selector(show) forControlEvents:UIControlEventTouchDown]; 
myButton.frame = CGRectMake(80.0, 120.0, 30, 30); 
myButton.showsTouchWhenHighlighted = YES; 
[self addSubview:myButton]; 

таким образом кнопка работает (называют show:), но использовать [myLabel addSubview:myButton]; кнопка не работает. не знаете почему?UIButton на UIScrollView не может работать

---------------- EDIT & РЕШЕНИЕ ------------ Спасибо @KennyTM

UILabel по умолчанию не обрабатывает любые события. Вам необходимо установить свойство userInteractionEnabled метки на YES.

Также вам не следует добавлять UIButton на вершине UILabel.

ответ

1

UILabel по умолчанию не обрабатывает никаких событий. Вам необходимо установить userInteractionEnabled property ярлыка на YES.

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

+0

Спасибо, просто подумайте, что они все подклассы UIView. –

+0

@william: UILabel * - это подкласс UIView, только он явно отключает 'userInteractionEnabled'. – kennytm