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];

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

Другие вопросы по тегам