2009-10-01 153 views
1

嗨即時嘗試添加一個按鈕,在用戶點擊屏幕上的點。在UIView點擊點添加按鈕

這裏是我的UIView文件

- (void)drawRect:(CGRect)rect { 
    // Drawing code 
    NSLog(@"drawRect, %i, %i", firstTouch.x, firstTouch.y); 
    [tagButton drawRect:CGRectMake(firstTouch.x, firstTouch.y, 100, 200)]; 
    [self addSubview:tagButton]; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 
    firstTouch = [touch locationInView:self]; 

    [self setNeedsDisplay]; 
} 

的代碼,這是從日誌firstTouch

2009-10-01 17:27:23.743文[2521:207]的drawRect,0,1080311808

我該如何獲得觸摸的x,y點,並在該點上創建一個uibutton?

任何幫助,將不勝感激,謝謝


這就是我想出,其添加的按鈕視圖。但是當我彈出這個視圖時,它會崩潰。我似乎無法找到任何問題。任何人都可以看到問題是什麼?

UIButton *newButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [newButton setFrame:CGRectMake(self.firstTouch.x, self.firstTouch.y, width, 17)]; 
     [newButton setTitle:[textField text] forState:UIControlStateNormal]; 
     [newButton setFont:[UIFont boldSystemFontOfSize:12]]; 
     [newButton setShowsTouchWhenHighlighted:YES]; 
     [newButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
     [newButton setTitleShadowColor:[UIColor blackColor] forState:UIControlStateNormal]; 
     [newButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter]; 
     [newButton setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter]; 
     [newButton setBackgroundColor:[UIColor clearColor]]; 

     UIImage *bgImg = [[UIImage imageNamed:@"button_greyblue.png"] stretchableImageWithLeftCapWidth:15.0 topCapHeight:0.0]; 
     [newButton setBackgroundImage:bgImg forState:UIControlStateNormal]; 


     [self setTagButton:newButton]; 
     [self.view addSubview:tagButton]; 
     [newButton release]; 

回答

0

因爲您使用的是%i,所以您會得到這些值。

firstTouch.x和.y值實際上是浮動的,所以你應該在NSLog中使用%f。

添加一個按鈕,你將不得不每次分配一個新的按鈕(專家,如果我錯了,請糾正我)。

除此之外,其餘代碼看起來足以在點擊點上添加按鈕。

哦,是的,你可以在touchBegan方法本身獲得firstTouch.x和firstTouch.y並在那裏添加一個按鈕。

+0

我遇到了一個新問題,你可以請看看嗎? – vicky 2009-10-02 07:22:57

0

我不認爲你想直接調用drawRect。在touchesBegan捕獲touchLocation的同時,仍然在touchesBegan更新tagButton的框架。有一個稱爲MoveMe的示例應用程序,Apple提供的應用程序非常簡單,有助於說明這一點。

此外,這些點表示爲浮動不是整數所以用%f,而不是%I


到您的新「問題」迴應:你似乎是在釋放newButton。記住規則......如果你通過alloc,new或copy來獲得對象,那麼你需要釋放它。如果沒有,那麼你不。所以你的應用程序崩潰,因爲你過度釋放該按鈕。刪除[newButton發佈]和東西應該很好...

+0

感謝您的回覆,我遇到了一個新問題,您可以請看看嗎? – vicky 2009-10-02 07:23:46