2011-03-25 158 views
3

我在UIScrollView中有很多按鈕,我試圖在按鈕單擊時獲得它們的位置。這裏是我的代碼:IOS獲取位置

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(2, 0, 262, 748)]; 
scrollView.contentSize=CGSizeMake(262, 816); 
scrollView.bounces=NO; 
scrollView.delaysContentTouches=YES; 

buton1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
buton1.frame = CGRectMake(2, 0, 262, 102); 
buton1.bounds = CGRectMake(2, 0, 262.0, 102.0); 
[buton1 setTag:1]; 
[buton1 setImage:[UIImage imageNamed:@"left_gride.png"] forState:UIControlStateNormal]; 
[buton1 addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; 
    [scrollView addSubview:buton1]; 

-(void) buttonClick:(UIButton*)button{ 
if ([button tag]==1) 
{ 
    NSLog(@"position:%d",buton1.frame.origin.x); 
} 
else 
{ 
    NSLog(@"position:%d",buton2.frame.origin.y); 
} 

}

有什麼不對我code.Thanks。

我也試圖與:

-(void) buttonClick:(UIButton*)button{ 
if ([button tag]==1) 
{ 
    NSLog(@"position:%d",buton1.frame.origin.x); 
} 
else 
{ 
    NSLog(@"position:%d",buton2.frame.origin.y); 
} 

-(void) buttonClick:(UIButton*)button{ 
if ([button tag]==1) 
{ 
    NSLog(@"position:%d",button.frame.origin.x); 
} 
else 
{ 
    NSLog(@"position:%d",button2.frame.origin.y); 
} 

但我剛剛得到的same.Position 0;

+1

請寫下你的期望和發生了什麼,如果你執行此代碼。 – GorillaPatch 2011-03-25 10:18:57

+0

我預計將返回的位置,我得到的是位置0. – flaviusilaghi 2011-03-25 10:20:44

回答

7

你的代碼看起來不錯。唯一的 - 你在NSLog中使用錯誤的格式說明符。作爲座標是浮點數,你應該使用%f而不是%d

NSLog(@"position:%f",buton1.frame.origin.x); 
+0

omg.Thanks很多。這工作。 – flaviusilaghi 2011-03-25 10:30:05

+0

現在我有另一個問題。即使我滾動按鈕的位置不會改變。那是爲什麼。 – flaviusilaghi 2011-03-25 10:33:47

+1

,因爲按鈕位置在滾動視圖內容的座標空間中 - 所以當您滾動時它實際上不會改變。如果你想獲得屏幕座標,你需要轉換爲它們(例如使用convertPoint:toView:方法) – Vladimir 2011-03-25 11:11:34

0

如果使用scrollRectToVisible:animated:方法,還有一招,因爲文件說:此方法滾動內容視圖,以便由矩形定義的區域只是在滾動視圖內可見。如果該區域已經可見,則該方法什麼也不做。

嘗試滾動到CGRectMake(buton1.frame.origin.x, buton1.frame.origin.y, yourScrollView.frame.width, yourScrollView.frame.height)

您可以在第三個參數上使用模糊因子。