35

このコードで UIImageView をスワイプすると NSLog を実行しようとしていますが、何らかの理由で機能しません。何か案が ?

@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");
}
4

6 に答える 6

102

デフォルトで無効になっているUIImageビューのユーザー操作を有効にします。

[imageView setUserInteractionEnabled:YES];

スワイプ ジェスチャー イベントの追加

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];

スワイプ ジェスチャー イベントの処理

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

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

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

}
于 2013-07-29T15:22:09.920 に答える
9

スウィフト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")
    }
}
于 2017-01-03T14:18:10.037 に答える
8

imageView.userInteractionEnabled = YES;UIImageView を作成した後に必ず追加してください。

これにより、ユーザーは、タップ、ドラッグ、スワイプ、またはその他の一般的なジェスチャーなど、ビューを操作できます。

こちらのドキュメントを参照してください。

于 2013-07-29T15:13:51.633 に答える
2

他の とは異なり、UIViewsデフォルトUIImageViewでは、ユーザー インタラクションが付属していますdisabled。コードに次の行を含めると、ジェスチャが期待どおりに機能するはずです。

imageView.userInteractionEnabled = YES;
于 2013-07-29T15:12:52.020 に答える