UIButton не запускает селектор, если я рисую его с помощью CALayer - PullRequest
0 голосов
/ 28 апреля 2010

Привет всем, я создаю эту кнопку следующим образом:

_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 голос
/ 28 апреля 2010

События не отправляются в элемент управления, который (1) скрыт, (2) альфа <0,1, (3) userInteraction = NO и т. Д. Поскольку у вас нет изображения кнопки, заголовка кнопки, цвета фона, фона нет изображение, может быть, оно рассматривается как прозрачное (например, альфа <0,1) и не получает события. Попробуйте добавить изображение, заголовок или цвет фона (в UIView, а не в слое), чтобы узнать, в этом ли проблема. </p>

РЕДАКТИРОВАТЬ: попробуйте поместить цвет фона в backgroundColor представления, а не в backgroundColor слоя:

_myButton.backgroundColor = [UIColor redColor];
0 голосов
/ 28 апреля 2010

Если я пропущу эту строку:

_myButton.layer.backgroundColor = [[UIColor redColor] CGColor];

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

...