UILongPressGestureRecognizer
уже делает то, что вы хотите для вас. Посмотрите на свойство UIGestureRecognizerState
. Из документации :
Жесты длинного нажатия являются непрерывными. Жест начинается
(UIGestureRecognizerStateBegan), когда число допустимых пальцев
(numberOfTouchesRequired) были нажаты за указанный период
(минимальная длительность) и касания не выходят за пределы
допустимый диапазон движения (allowableMovement). Жест
распознаватель переходит в состояние изменения при каждом движении пальца,
и это заканчивается (UIGestureRecognizerStateEnded), когда любой из пальцев
подняты.
Таким образом, после вызова селектора UILongPressGestureRecognizer
вы слушаете UIGestureRecognizerStateBegan, UIGestureRecognizerStateChanged, UIGestureRecognizerStateEnded. Продолжайте менять рамку вида во время UIGestureRecognizerStateChanged
.
- (void)moveRight:(UILongPressGestureRecognizer *)gesture
{
if(gesture.state == UIGestureRecognizerStateBegan)
{
//if needed do some initial setup or init of views here
}
else if(gesture.state == UIGestureRecognizerStateChanged)
{
//move your views here.
[yourView setFrame:];
}
else if(gesture.state == UIGestureRecognizerStateEnded)
{
//else do cleanup
}
}