[英]Detect tap on UIImageView IOS
難道我做錯了什么? 我無法檢測到UIImageview
上的點UIImageview
。 UIImageView *myImage
是在storyboard中創建的。 代碼文件位於: 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
我認為你應該使用類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");
}
您只需將.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連接到委托。您只需嘗試此代碼
即使您通過代碼啟用它,嘗試轉到您的故事板檢查圖像視圖上的“啟用用戶交互”,您的代碼似乎很好,嘗試並讓我知道。
另外,只是想一想,在分配tapgesture之前嘗試在imageview上啟用交互:)
UIGestureRecognizer *sliderTapview1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedImage:)];
[img addGestureRecognizer:sliderTapview1];
img.userInteractionEnabled = YES;
只是替換它。
看起來每件事情都很好嘗試這樣做[myImage userInteractionEnabled:YES]並在圖像視圖的界面構建器中刪除“自動布局”和“啟用用戶交互”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.