Как запретить пользователю панорамировать мой вид с экрана? - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть UIView, который получает панорамирование пользователя от распознавателя жестов.Я понял, что иногда пользователь «выбрасывает» мой взгляд почти из экрана, и это выглядит очень плохо.Я хочу предотвратить это.Я знаю, что должен сделать некоторую проверку в моем селекторе, но я не знаю, как это сделать, когда представление переведено.

Вот мой код:

- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer
{
    UIView *piece = [gestureRecognizer view];

    [self adjustAnchorPointForGestureRecognizer:gestureRecognizer];

    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
        CGPoint translation = [gestureRecognizer translationInView:[piece superview]];

        [piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)];
        [gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
    }


}

Заранее спасибо

С уважением

Лев

1 Ответ

1 голос
/ 09 сентября 2011

Вы можете добавить следующее условие в свой код.

if ([состояние gestRecognizer] == UIGestureRecognizerStateEnd)

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

Ниже приведен возможный пример.

if (zl.layer.frame.origin.x > 0) {
    self.moveFactorX = self.moveFactorX-zl.layer.frame.origin.x; 
    [zl.layer setValue:[NSNumber numberWithFloat: moveFactorX+totalMoveX] forKeyPath: @"transform.translation.x"];
}
else if(zl.layer.frame.origin.x < pageSize.width - zl.layer.frame.size.width){
    self.moveFactorX = self.moveFactorX-(zl.layer.frame.origin.x - pageSize.width + zl.layer.frame.size.width); 
    [zl.layer setValue:[NSNumber numberWithFloat: moveFactorX+totalMoveX] forKeyPath: @"transform.translation.x"];
}

Это проверено для меня, если левая сторона слоя класса zl находится внутри экрана.,Когда он находится внутри экрана, то я нажимал обратно в крайний левый угол.

В противном случае он проверяет, находится ли он внутри экрана с правой стороны или нет.и когда условие удовлетворяется, оно выдвигает его на правую границу.

Точно так же, как и в случае с верхом и низом.

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

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