UIButton не запускает селектор, если я рисую его с помощью CALayer
Привет всем, я создаю эту кнопку следующим образом:
_myButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
DLBadgeLayerDelegate *layerDelegate = [[DLBadgeLayerDelegate alloc] init];
_myButton.frame = CGRectMake(0.0 , 0.0, 100.0, 100.0);
[_myButton addTarget:self action:@selector(myButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
_myButton.layer.backgroundColor = [[UIColor redColor] CGColor];
_myButton.center = CGPointMake(10.0, 10.0);
[self addSubview:_myButton];
[_myButton release];
Кнопка появляется на экране, но если я нажимаю на нее, ничего не происходит. Если я просто создаю прямоугольную кнопку с закругленными углами вместо этого без какого-либо пользовательского рисунка на ее слое или если я просто оставляю строку кода вне слоя, все работает хорошо. Есть ли у вас идея, почему я получаю такое поведение, как я хотел бы сделать некоторые пользовательские рисования в слое кнопки?
2 ответа
События не отправляются в элемент управления, который (1) скрыт, (2) альфа < 0,1, (3) userInteraction=NO и т. Д. Поскольку у вас нет изображения кнопки, заголовка кнопки, цвета фона, изображения фона, возможно, он обрабатывается как прозрачный (например, альфа < 0,1) и не получает события. Попробуйте добавить изображение, заголовок или цвет фона (в UIView, а не в слое), чтобы увидеть, если это проблема.
РЕДАКТИРОВАТЬ: попробуйте поместить цвет фона в backgroundColor представления вместо в backgroundColor слоя:
_myButton.backgroundColor = [UIColor redColor];
Если я оставлю эту строку:
_myButton.layer.backgroundColor = [[UIColor redColor] CGColor];
событие срабатывает правильно, и у меня все еще нет названия, альфа и т. д. Я не думаю, что это проблема или объяснение, но я попробую и так.