2015-08-28 3 views
0

Есть ли способ включить события касания для слоев вида, добавленных в CAReplicatorLayer?CAReplicatorLayer и события касания

Я добавляю UIButton к CAReplicatorLayer, я хотел бы сделать как оригинальные, так и дублированные экземпляры кнопки для удобства отображения.

До сих пор я пробовал переадресовывать-hitTest:withEvent: и -touchesXXX:withEvent: методам кнопки, ничто не работало для меня еще (если это возможно).

Из UIViewController:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    static UIButton *button; // Temp hack to keep a ref to the button 
    button = [UIButton buttonWithType:UIButtonTypeSystem]; 
    button.frame = CGRectMake(30, 100, 60, 44); 
    [button setTitle:@"Button" forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside]; 

    CAReplicatorLayer *layer = [CAReplicatorLayer layer]; 
    layer.frame = self.view.bounds; 
    layer.instanceCount = 2; 
    layer.instanceTransform = CATransform3DMakeTranslation(70, 0, 0); 
    [layer addSublayer:button.layer]; 
    [self.view.layer addSublayer:layer]; 
} 

- (void)buttonTapped:(id)sender 
{ 
    NSLog(@"Tapped"); 
} 

ответ

0

Вам нужно самостоятельно кнопку, чтобы скопировать, потому что слои не получают события прикосновения. Также вам нужно добавить кнопку в иерархию вашего представления, а не только слои.

+0

Чтобы работать с CAReplicatorLayer, вам нужно добавить его в качестве подуровня, насколько я знаю, вы не можете добавить его в качестве подзаголовка. – SomeGuy

Смежные вопросы