0

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

КОД:

-(void) recognizeTapGesture : (UITapGestureRecognizer*)sender { 

    CGPoint event; 
    event = [sender locationInView: nil ]; 

    NSLog(@"Tap Detected (%f,%f) %lu",event.x,event.y,(unsigned long)sender.numberOfTouches); 
} 

-(void) recognizeLeftSwipeGesture : (UISwipeGestureRecognizer*)sender { 

    CGPoint event; 
    event = [sender locationInView: nil ]; 

    NSLog(@"Left Swipe Detected (%f,%f) %lu",event.x,event.y,(unsigned long)sender.numberOfTouches); 

} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    _TapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(recognizeTapGesture:)]; 

    _LeftswipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget: self action:@selector(recognizeLeftSwipeGesture:) ]; 

    _LeftswipeGesture.direction = UISwipeGestureRecognizerDirectionLeft; 

    _LeftswipeGesture.cancelsTouchesInView = NO; 

    _TapGesture.cancelsTouchesInView = NO; 

    [[self window] addGestureRecognizer:_LeftswipeGesture]; 

    [[self window] addGestureRecognizer:_TapGesture]; 

    return YES; 
} 

ВЫВОД:

Tap Detected (286.500000,460.500000) 1 
Left Swipe Detected (0.000000,0.000000) 1 

Является ли этот код достаточно, чтобы найти положение прикосновения. Я хочу знать, как найти положение салфетки в объективе-c. Есть что-то, чего я не вижу? Почему количество касаний всегда 1. Когда я устанавливаю , минимальные касания требуются более одного, салфетки не обнаружены.

+0

Показать код, который вы использовали для Tap Gesture. –

+0

@ Mr.UB, я ввел полный код. Является ли приведенный выше код достаточным для получения позиции жестов салфетки. Я не обрабатывал ** touchBegan, touchsEnded и т. Д. ** Кроме того, почему число касаний всегда одно? Когда я изменяю ** числосочетаний, необходимое ** на 2, оно не обнаруживается. –

+0

Изменить 'event = [sender locationInView: nil];' to 'event = [sender locationInView: self.view];' и посмотреть, что произойдет. –

ответ

0

Я не знаю, почему именно это так, но tapGesture получает местоположение на уровне окна, а swipeGesture получает местоположение от уровня просмотра. Следовательно, в случае swipeGesture функция поиска местоположения становится этим

event = [sender locationInView: currentviewController.view ];

Чтобы получить currentviewcontroller, мы можем либо создать функцию, чтобы получить его и использовать выше код или просто определить функцию и gesturerecognizer в UIViewController и использовать это,

event = [sender locationInView: self.view ];

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