2012-07-04 35 views
22

我試圖做一個UIImageView接受動作和解僱他們每次它點擊了UIImageVie,但我有在得到它的工作辛苦,請大家幫我出的UIImageView的按鈕

但這裏是我在做什麼:

[View setUserInteractionEnabled:YES]; 

[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside]; 


- (void) myAction:(id)sender 
{ 
    NSLog(@"It works!"); 
} 

回答

65

Objective-C的

在你viewDidLoad:方法寫:

-(void)viewDidLoad { 

    UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)]; 
    [imageview setImage:[UIImage imageNamed:@"image.png"]]; 
    [imageview setUserInteractionEnabled:YES]; 

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)]; 
    [singleTap setNumberOfTapsRequired:1]; 
    [imageview addGestureRecognizer:singleTap]; 

    [self.view addSubview:imageview]; 
} 

然後打電話給你的手勢方法是這樣的:

-(void)singleTapping:(UIGestureRecognizer *)recognizer { 
    NSLog(@"image clicked"); 
} 

斯威夫特

override func viewDidLoad() { 
    super.viewDidLoad() 

    let imageView: UIImageView = UIImageView(frame: CGRectMake(100.0, 100.0, 100.0, 100.0)) 
    imageView.image = UIImage(named: "image.png") 
    imageView.userInteractionEnabled = true 

    let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(BaseVC.singleTapping(_:))) 
    singleTap.numberOfTapsRequired = 1; 
    imageView.addGestureRecognizer(singleTap) 

    self.view.addSubview(imageView) 
} 

func singleTapping(recognizer: UIGestureRecognizer) { 
    print("image clicked") 
} 
+0

我嘗試了,但沒有發生......在康壽不打印任何東西,(順便說一句它對於iPhone) – user1480092

+0

只是修復它,另一個代碼阻止了我的應用程序..但謝謝! – user1480092

+0

對於Swift3:imageView.isUserInteractionEnabled = true – akr

0

UIImageView不是UIControl所以它不具備addTarget:action:forControlEvents方法,其接口的一部分。您可以使用手勢識別器。

+0

這樣說的:類「MainViewController」不落實「UIGestureRecognizerDelegate」協議,我應該怎麼辦? – user1480092

+0

添加UITapGestureRecognizerDelegate上您的課(我通常把它.h文件界面,但你也可以做到這一點在.M接口聲明) – Septronic

9

UIImageView不是控件,您不能爲其添加目標控件事件。您有以下幾種選擇:

UIImageView上放置一個隱形UIButton並將您的目標添加到該目標中。您可以將按鈕的樣式設置爲自定義,並將其文本(和圖像)設置爲任何內容以使其不可見。使用UIButton。你可以添加一個背景圖片。

添加UITapGestureRecognizer到您的圖像視圖,並實現它的觸摸處理方法。

子類UIImageView並重寫觸控處理方法做你需要做什麼都。

1

我不是一個職業,但是你可以用按鈕此

UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
imageButton.frame = CGRectMake(0, 0, 200, 200); 
[imageButton setImage:[UIImage imageNamed:@"Your_Image.png"] forState:UIControlStateNormal]; 
imageButton.adjustsImageWhenHighlighted = NO; 
[imageButton addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:imageButton]; 
8

所有你需要做的就是將一個點觸手勢識別器到ImageView的(在故事板),並啓用屬性檢查器用戶交互。 如果您想要將圖像用作另一個視圖控制器的鏈接,只需將控制面板中視圖控制器底部的Tap Gesture Recognizer圖標拖動到目標視圖控制器。

相關問題