2015-10-12 3 views
0

Я получил этот код, который позволяет пользователю перетаскивать вверх представление в определенной степени:Переместить вид вверх и вниз с ограничениями

func handlePan(recognizer:UIPanGestureRecognizer) { 
    let translation = recognizer.translationInView(self.view) 

    print("the translation x:\(translation.x) & y:\(recognizer.view?.frame.minY)") 

    if(recognizer.view?.frame.minY > -268) 
    { 
     if let view = recognizer.view { 

      view.center = CGPoint(x:view.center.x, 
       y:view.center.y + translation.y) 
     } 

     recognizer.setTranslation(CGPointZero, inView: self.view) 
    } 


} 

Теперь я хотел бы, чтобы позволить пользователю перетащить вниз вид, в определенной степени. Как я могу изменить функцию, чтобы позволить ему это сделать?

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

ответ

0

Попытайтесь изменить свое состояние ввода части кода, которая обрабатывает перемещение центра. Это может выглядеть следующим образом (Obj-C фрагмент):

if(recognizer.view.frame.origin.y <= 256 && recognizer.view.frame.origin.y >= 0) { 
    // logic to move center 
} 

Проверяется положение вида в обоих направлениях.


EDIT:

Чтобы переместить точку зрения после того, как он вышел за пределы указанного диапазона, то вы всегда можете проверить, если новая точка центра находится внутри этого диапазона. Например.

CGPoint newCenter = CGPointMake(recognizer.view.center.x, recognizer.view.center.y + translation.y); 
if (newCenter.y > 256) { 
    newCenter.y = 256; 
} 
if (newCenter.y < 0) { 
    newCenter.y = 0; 
} 

Это очень просто, и, возможно, не очень умное решение, но оно должно работать как точка зрения не сможет выйти из диапазона.

+0

Это не помогло, это заставило меня переместить вид очень маленького количества. – dpstart

+0

Попробуйте изменить значения 0 и 256 на некоторые другие, все зависит от того, где ваш вид на экране. – Rafal

+0

Таким образом, когда представление останавливается, так как оно достигает максимальной высоты, оно больше не может перемещаться, так как origin.y всегда останется прежним – dpstart

Смежные вопросы