Ситуация: нужно найти слой, к которому прикоснулся пользователь.
Проблема: Apple говорит, что мы должны использовать [CALayer presentationLayer] для тестирования попаданий, чтобы он представлял то, что на самом деле отображается на экране в данный момент (он захватывает информацию в середине анимации и т.д.).
... за исключением: presentationLayer НЕ возвращает исходные слои, он возвращает их копии ... итак: hitTest вернет совершенно новый экземпляр CALayer, который не эквивалентен оригиналу.
Как мы узнаем, какой фактический CALayer был поражен?
, например
CALayer* x = [CALayer layer];
CALayer* y = [CALayer layer];
[self.view.layer addSublayer: x];
[self.view.layer addSublayer: y];
...
CALayer* touchedLayer = [self.view.layer.presentationLayer hitTest:touchPoint];
... но, тронут ли слой "x", или это "y"?
if( touchedLayer == x ) // this won't work, because touchedLayer is - by definition from Apple - a new object