2013-07-29 17 views
32

Próbuję NSLog kiedy przesuń palcem nad UIImageView z tym kodem, ale to nie działa z jakiegoś powodu. Dowolny pomysł ?Rozpoznawanie gestów (przesuwanie) na UIImageView

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIImage *image = [UIImage imageNamed:@"image2.png"]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

    imageView.frame = [[UIScreen mainScreen] bounds]; 

    [self.view addSubview:imageView]; 

    UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)]; 
    [recognizer setNumberOfTouchesRequired:1]; 
    [imageView addGestureRecognizer:recognizer]; 

} 

- (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer { 
    NSLog(@"right swipe"); 
} 

Odpowiedz

102

Włącz Widok UImage interakcja użytkownika, która jest domyślnie wyłączona.

[imageView setUserInteractionEnabled:YES]; 

dodanie gest machnięcia Wydarzenia

UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 

// Setting the swipe direction. 
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight]; 

// Adding the swipe gesture on image view 
[imageView addGestureRecognizer:swipeLeft]; 
[imageView addGestureRecognizer:swipeRight]; 

Handling Swipe gest wydarzenia

- (void)handleSwipe:(UISwipeGestureRecognizer *)swipe { 

    if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) { 
     NSLog(@"Left Swipe"); 
    } 

    if (swipe.direction == UISwipeGestureRecognizerDirectionRight) { 
     NSLog(@"Right Swipe"); 
    } 

} 
+0

Czy nie byłoby bardziej wydajne mieć 'else if' w funkcji' handleSwipe'? – shadowmoses

+0

Tak, możesz ... Powyższy kod służy wyłącznie do celów reprezentacyjnych. – icodebuster

3

inna niż inne UIViews, UIImageView, domyślnie, pochodzi z interakcji użytkownika disabled. Uwzględnij tę linię w kodzie i gest powinien działać zgodnie z oczekiwaniami:

imageView.userInteractionEnabled = YES; 
9

Pamiętaj, aby dodać imageView.userInteractionEnabled = YES; po utworzeniu UIImageView.

Umożliwia to użytkownikom interakcję z Twoim widokiem, takim jak dotknięcie, przeciągnięcie, przeciągnięcie lub inne gesty ogólne.

Zobacz dokumentację here.

5

w Swift 3

ImageView.isUserInteractionEnabled = true 
let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.getSwipeAction(_:))) 
self.ImageView.addGestureRecognizer(swipeGesture) 

func getSwipeAction(_ recognizer : UISwipeGestureRecognizer){ 

    if recognizer.direction == .right{ 
     print("Right Swiped") 
    } else if recognizer.direction == .left { 
     print("Left Swiped") 
    } 
} 
0

biegałam w kłopoty z tym, gdzie mogłem pobierz narzędzie UISwipeGestureRecognizer do pracy, jeśli dodałem go do self.view, ale nie do pojedynczego UIImageView. Podziękowania dla Jeffa Ayana za przykład kodu Swift 3. Jeśli korzystasz z kreatora interfejsów, możesz również zaznaczyć pole Włączone interakcje użytkownika dla UIImageView w inspektorze atrybutów.

Powiązane problemy