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 ответ
Вам нужно скопировать саму кнопку, потому что слои не получают сенсорные события. Также вам нужно добавить кнопку в иерархию видов, а не только слои.