2013-04-12 50 views
0

我有一個按鈕。每次用戶點擊它時,應用程序都會實例化圖像查看器,爲其標籤指定一個唯一的編號。獲取被觸摸對象的標籤編號

- (IBAction)buttonClicked:(id)sender { 
    imageview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 240)]; 
    NSUInteger currentag = [self UniqueNum]; // Assigning a unique number to the tag variable 
    [self.view addSubview:imageview]; 
    imageview.backgroundColor = [UIColor blueColor]; 
    imageview.userInteractionEnabled = YES; 
    imageview.tag = currentag; 
} 

我的目標是獲得用戶觸摸的UIImageView副本的標記號。使用下面的代碼,我實際得到的是應用程序最後創建的UIImageView副本的標記號。我該如何改進它以便應用程序將指向被觸摸對象的標籤號?

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event { 
    UITouch *touch = [[event allTouches] anyObject]; 
    if([touch view] == imageview) { 
     NSLog(@"Tag: %i",imageview.tag); 
    }  
} 

謝謝你的幫助。

回答

1

如果您需要交互,我建議在這裏使用帶有自定義圖像的UIButton而不是UIImageView。

添加此當您添加的按鈕:

[imageview addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventAllTouchEvents]; 

然後只投了sendersomeMethod(你的宣言),以UIView的得到它的標籤。

BTW,的someMethod的方法簽名是這樣的:

-(void) someMethod:(id)sender 

您也可以任選添加事件參數,但似乎並不在這裏需要。

+0

啊......這很聰明。讓我看看。謝謝。 –

+0

嗯......我在'imageview'上得到一個錯誤,''UIImageView'沒有可見的@interface'聲明選擇器'addTarget:action:forControlEvents。'。 –

+0

@TBlue Damnit,忘記了這只是從UIControl繼承的類的實例。如果您仍想使用這種方法,請將您的UIImageViews更改爲UIButtons並設置圖像。 –