2010-03-11 67 views
5

我只是說與iPhone開發,似乎無法找到答案,我正在尋找我想要做的。觸及UIImageView的事件處理程序

看來我應該能夠以編程方式創建一個UIImageView,然後爲它的觸摸功能設置一個事件處理程序。

在C#中我會有一些看起來像

鍵b =新的Button

(); b.Click + =我的處理程序代碼

現在我有這個

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 141.0f, 151.0f); 
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect]; 

myImage.userInteractionEnabled = YES; 
[myImage setImage:[UIImage imageNamed:@"myImage.png"]]; 
myImage.opaque = YES; // explicitly opaque for performance 
[self.view addSubview:myImage]; 
[myImage release]; 

什麼我需要做的覆蓋觸摸事件?

感謝

回答

9

雖然它不是完整的回答你的問題,我認爲下面的解決方案可能會更好然後做「隱形鍵式解決辦法」 .. 簡單地從UIImageView的子類,並重寫下列方法:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

//your UIImageView has been touched :) 

//event -> "A UIEvent object representing the event to which the touches belong." 

//touches -> "A set of UITouch instances in the event represented by event that represent the touches in the UITouchPhaseEnded phase." 

} 

希望這可以幫助...

+0

真的這不是我正在尋找的答案。但似乎我能找到的唯一方法是使用繼承。我猜c#已經讓我覺得沒有那麼多工作,我認爲像這樣的方法應該是可用的。但是,謝謝。 – madmik3 2010-03-16 12:18:23

0

我還沒有找到一種方法來直接與UIImageView做到這一點。但是,如果您繼承它並覆蓋nextResponder方法以在您的控制下返回委託,則可以執行您的操作。將委託作爲子類的屬性公開,然後您可以傳入觸摸事件的委託並隨時更改它。

0

我見過其他答案,建議在UIImageView下面放置一個隱形按鈕,將圖像視圖設置爲userInteractionEnabled: NO,並讓觸摸通過按鈕。

3

只需使用自定義UIButton與圖像作爲背景圖像。

5

我有一個像「關於」一些圖標的主視圖來打開關於視圖。 在相應的控制器(mainview)中,我爲touchesBegan添加了一個事件處理程序。 此外,我需要檢查哪個視圖被「觸摸」,因爲視圖上有更多圖標。 我的UIImageView實例是「aboutImg」,需要檢查用戶交互(即UI構建器 - >視圖屬性檢查器)。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    if ([touch view] == aboutImg){ 
     [self ShowAbout]; 
    } 
} 

確保您選中「啓用了用戶交互」。這是最簡單的解決方案

+0

這是最簡單的解決方案。我檢查用戶交互複選框,並將其扔到子類UITableViewCell中以抓取單元格中的多個觸摸。工作完美,輕鬆。 Ne需要繼承UIImageView – 2013-01-02 15:11:32

0

你需要無關的UIImageView,你可以使用的UIButton與類型的定製和內部操作添加觸摸到它...設置button.imageview setImage: 即:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
btn.frame = CGRectMake(0,0,100,100); //edit for you own frame 
UIImage *img = [UIImage imageNamed:@"myimage.png"]; 
[button setImage:img forState:UIControlStateNormal]; 

如果你想使用UIImageView,那麼你需要添加手勢到你的圖像視圖。否則,你可以繼承你的UIImageView,然後使用觸摸事件。

0

將onClick事件添加到UIImageView或UIView的最簡單方法是向其添加輕擊手勢識別器。

UIImage *myImage = [UIImage imageNamed:@"myImage.png"]; 
UIImageView *myImageView = [[UIImageView alloc] initWithImage: myImage]; 

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(onImageViewClicked)]; 
singleTap.numberOfTapsRequired = 1; 
singleTap.numberOfTouchesRequired = 1; 
[self.myImageView addGestureRecognizer:singleTap]; 
[self.myImageView setUserInteractionEnabled:YES];