Нахождение CALayer из сенсорного местоположения в другой ориентации? - PullRequest
0 голосов
/ 07 июля 2011

Я использую этот код ниже, чтобы найти слой, который был нажат.

- (CALayer *)layerForTouch:(UITouch *)touch {
    UIView *view = self.view;

    CGPoint location = [touch locationInView:view];
    location = [view convertPoint:location toView:nil];

    CALayer *hitPresentationLayer = [view.layer.presentationLayer hitTest:location];
    if (hitPresentationLayer) {
        return hitPresentationLayer.modelLayer;
    }

    return nil;
}

Все отлично работает в режиме Normal Portrait.

Проблема в том, что если я повернутак что у меня есть это в альбомной ориентации и нажатие в верхней средней части экрана, местоположение вернет 313, 543. Значение X должно быть 0, потому что это верхняя часть экрана в ландшафтном режиме, но кажется, что этот код не переделывает Touchpoint в зависимости отв какой ориентации находится пользователь.

Есть идеи, как получить реальную точку соприкосновения в зависимости от ориентации?

1 Ответ

1 голос
/ 25 февраля 2012

У меня была похожая проблема в поповере, и я удалил строку:

location = [view convertPoint:location toView:nil];

и у меня все заработало нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...