Несколько просмотров Swipe - PullRequest
0 голосов
/ 19 июля 2011

Поэтому я пытаюсь создать приложение, которое меняет метку в зависимости от направления, которое вы проводите. Однако вместо того, чтобы проводить по экрану в любом месте, я бы хотел, чтобы он проводил только по определенному виду. Я поместил новый вид в файл .xib и использовал этот вид для определения местоположения касаний и назвал его leftView, но он по-прежнему использует весь экран. Я использую методы touchesBegan и touchesMoved, чтобы я мог использовать диагонали. Вот код, который я использую:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
gestureStartPoint = [touch locationInView:leftView];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:leftView];
CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x);
CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y);
if ((deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) && currentPosition.x < gestureStartPoint.x){
    label.text = @"Left Horizontal swipe detected";
}
else if((deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) && currentPosition.x > gestureStartPoint.x){
    label.text = @"Right Horizontal swipe detected";
}
else if ((deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance) && currentPosition.y < gestureStartPoint.y){
    label.text = @"Up Vertical swipe detected";
}
else if ((deltaY >= kMinimumGestureLength && deltaX <= kMaximumVariance) && currentPosition.y > gestureStartPoint.y){
    label.text = @"Down Vertical swipe detected";
}

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Вы можете достичь того, что вам нужно, добавив два UIGestureRecognizer s (один для пролистывания вправо, а другой для пролистывания влево) к UIView, который вы хотите получить.

Пример проекта Apple SimpleGestureRecognizer дает отличную иллюстрацию того, как это настроить.

0 голосов
/ 19 июля 2011

Проверьте инспектор идентификации, выбран ли класс uiview для объекта UIView в органайзере. Я предполагаю, что вы реализовали метод touchesBegan в подклассе UIView.

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