Этого вопрос имеет какое-то отношение к этому сообщению я сделал недавно: Drag a UIView part-way, then it moves on its ownпределов положения Установки для перетаскиваемого UIView при использовании UIPanGestureRecognizer
Короче говоря, у меня есть перемещаемый вид UI частично видимый в нижней части окна. Существует вкладка «pull», которую пользователь может использовать для перетаскивания изображения вверх или вниз по экрану. Я поставил ограничения на положение Y для верхних и нижних позиций, используя этот код, но я понятия не имею, если это правильный способ сделать это:
- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer
{
UIView *piece = [gestureRecognizer view];
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged)
{
CGPoint velocity = [gestureRecognizer velocityInView:[piece superview]];
CGPoint translation = [gestureRecognizer translationInView:[piece superview]];
if(velocity.y < 0) //user is dragging the view upwards the screen
{
// Set the maximum Ypos as the top 1/3rd of the screen
CGFloat maxYPos = self.view.frame.size.height/3;
if(blogTextView.frame.origin.y >= maxYPos)
{
[piece setCenter:CGPointMake([piece center].x, [piece center].y + translation.y)];
[gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
}
}
else
{
// User is dragging the view downwards the screen
// Set the lowest Y position to be 420
if(blogTextView.frame.origin.y <= 420) //size of remaining view
{
[piece setCenter:CGPointMake([piece center].x, [piece center].y + translation.y)];
[gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
}
}
}
}
Я думаю, что это выглядит некрасиво , но он работает, если пользователь медленно перетаскивает представление. Проблема заключается в том, что пользователь очень быстро перетаскивает представление вверх или вниз по экрану, тогда представление можно вытащить за пределы, которые я накладываю на позицию Y. Например, в состоянии по умолчанию с перетаскиваемым представлением внизу, я смог перетащить представление в мгновенной скорости до конца до панели навигации!
Есть ли правильный способ установить пределы того, как далеко можно перетащить представление, и будет ли он правильно обрабатываться в этом обратном вызове gestureRecognizer?
Для справки, вот фото тестового приложения:
Default screen with draggable view at the bottom and the pull tab
View dragged up to its correct max Y position
Спасибо!
Можете ли вы объяснить, что такое ** blogTextView ** и ** штука **? – sch