CAReplicatorLayer и сенсорные события

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

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

Пока я пробовал пересылку UIView-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");
}

1 ответ

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

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