Обнаружение нажатия на UIImageView IOS

Я делаю что-то неправильно? Я не могу обнаружить кран на UIImageview. UIImageView *myImage создается в раскадровке. файлы кода находятся здесь: https://drive.google.com/folderview?id=0B2jWw-2wZC52NDBFZ2lXUTUzQXM&usp=sharing

Файл: ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutlet UIImageView *myImage;

@end

Файл: ViewController.m

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIGestureRecognizer *tapGestureRecognizer = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(tappedImage:)];
    [self.myImage addGestureRecognizer:tapGestureRecognizer];
    self.myImage.userInteractionEnabled = YES; // default is no for UIImageView

}

- (void)tappedImage:(UIGestureRecognizer *)gestureRecognizer {
    //UIImageView *myImage = (UIImageView *)gestureRecognizer.view;
    // do stuff;
    NSLog(@"it works");
}


@end

person user1172579    schedule 25.03.2014    source источник
comment
я исправил это, заменив UIGestureRecognizer на UITapGestureRecognizer!! спасибо всем!   -  person user1172579    schedule 11.04.2014


Ответы (5)


Я думаю, вы должны использовать класс UITapGestureRecognizer как:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)];
singleTap.numberOfTapsRequired = 1;
preArrowImage.userInteractionEnabled = YES;
[preArrowImage addGestureRecognizer:singleTap];

-(void)tapDetected{
NSLog(@"single Tap on imageview");

}
person A J    schedule 25.03.2014

Вы просто меняете файл .h на

 #import <UIKit/UIKit.h>

 @interface ViewController : UIViewController<UIGestureRecognizerDelegate>

@property (strong, nonatomic) IBOutlet UIImageView *myImage;

@end

Затем файл .m

 #import "ViewController.h"
 @interface ViewController ()

 @end

 @implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

UIGestureRecognizer *tapGestureRecognizer = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(tappedImage:)];
tapgestureRecognizer.delegate = self;
[self.myImage addGestureRecognizer:tapGestureRecognizer];
self.myImage.userInteractionEnabled = YES; // default is no for UIImageView

}

 - (void)tappedImage:(UIGestureRecognizer *)gestureRecognizer {
//UIImageView *myImage = (UIImageView *)gestureRecognizer.view;
// do stuff;
NSLog(@"it works");
 }


@end

Я подключаю tapgestureRecognizer к делегату. Просто попробуйте этот код

person Albin Joseph    schedule 25.03.2014
comment
Уважаемый Альбина, по вашему методу не работает. может быть, вы можете попробовать загрузить мой код. его можно найти здесь: drive.google.com/ - person user1172579; 26.03.2014

 UIGestureRecognizer *sliderTapview1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedImage:)];
    [img addGestureRecognizer:sliderTapview1];

   img.userInteractionEnabled = YES;

просто замените это.

person Hitendra    schedule 25.03.2014

даже если вы включили его с помощью кода, попробуйте перейти к своей раскадровке, проверьте «включить взаимодействие с пользователем» в представлении изображения, ваш код выглядит нормально, попробуйте и дайте мне знать.

плюс, просто мысль, попробуйте включить взаимодействие с изображением, прежде чем назначать жест касания :)

person Nour1991    schedule 25.03.2014

выглядит все в порядке, попробуйте сделать так [myImage userInteractionEnabled: YES] и удалите «автоматический макет» и «включить взаимодействие с пользователем» в конструкторе интерфейса при просмотре изображения.

person yashwanth77    schedule 25.03.2014
comment
Уважаемый Yashwanth, тот же результат с вашей рекомендацией. Пожалуйста, найдите код здесь: drive.google.com/ - person user1172579; 26.03.2014