2011-06-09 75 views
0

我写下了如下所示的代码。我的问题是我无法触摸某些按钮。我用NSTimer方法编写了这个方法。任何人都可以帮助解决这个问题吗?移动时无法触摸按钮

一种方法是创建一个按钮,另一种方法是将值更改为屏幕大小。

-(void)createButton 
{ 
int x=0; 
int y=0; 
int width=100; 
int height=100; 

for (int i=0; i<9; i++) 
{ 

    UIButton *button=[[UIButton alloc] initWithFrame:CGRectMake(x ,y, width, height)]; 
    [button.titleLabel setFont:[UIFont fontWithName:@"Helvetica" size:24.0]]; 
    NSDate *date=[NSDate date]; 
    NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init]; 
    [dateformatter setDateFormat:@"ss"]; 
    NSString *sec=[dateformatter stringFromDate:date]; 

    NSLog(@"sec is %@",sec); 

    CGPoint dest= CGPointMake(arc4random() %768, arc4random() %1024); 
    //CGPoint dest= CGPointMake(arc4random() %[sec intValue], arc4random() %480); 
    button.tag=i; 
    [button setBackgroundColor:[UIColor blackColor]]; 
    [button setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; 
    [button setTitle:[NSString stringWithFormat:@"%d",i] forState:UIControlStateNormal]; 
    //[button setImage:[UIImage imageNamed:@"thing.png"] forState:UIControlStateNormal]; 

    int numx=[[NSNumber numberWithInt:dest.x]intValue]; 
    int numy=[[NSNumber numberWithInt:dest.y]intValue]; 
    //button.center.x= numx+5; 
    //button.center.y=numy+5; 
    button.center=CGPointMake(numx+10, numy+10); 

    NSMutableDictionary *dict=[[NSMutableDictionary alloc]init]; 
    [dict setValue:[NSNumber numberWithInt:5] forKey:@"Xvalue"]; 
    [dict setValue:[NSNumber numberWithInt:5] forKey:@"Yvalue"]; 
    [dict setValue:button forKey:@"Button"]; 

    [button addTarget:self action:@selector(buttonpressed:) forControlEvents:UIControlEventTouchUpInside]; 
    //[button addTarget:self action:@selector(dragBegan:withEvent:)forControlEvents: UIControlEventTouchDown]; 
    //[button addTarget:@selector(buttonpressed:) action:@selector(buttonpressed:) forControlEvents:UIControlStateSelected]; 
    [button addTarget:self action:@selector(dragMoving:withEvent:)forControlEvents: UIControlEventTouchDragInside];  
    [button addTarget:self action:@selector(dragEnded:withEvent:)forControlEvents: UIControlEventTouchUpInside | 
    UIControlEventTouchUpOutside]; 
    [self.buttonArray addObject:dict]; 
    [self.view addSubview:button]; 
    [button release]; 
    x+=50; 

} 


} 

-(void)timerMethod 
{ 

for(NSMutableDictionary *dict in self.buttonArray) 
{ 
    UIButton *but=[dict objectForKey:@"Button"]; 
    CGPoint bcenter=but.center; 
    int numx=[[dict objectForKey:@"Xvalue"]intValue]; 
    int numy=[[dict objectForKey:@"Yvalue"]intValue]; 

    bcenter.x+=numx; 
    bcenter.y+=numy; 
    //bcenter.x=bcenter.x+[dict objectForKey:@"Xvalue"]; 
    //bcenter.y=bcenter.y+[dict objectForKey:@"Yvalue"]; 

    but.center=bcenter; 

    if(bcenter.x>720) 
    { 
     [dict setValue:[NSNumber numberWithInt:-10] forKey:@"Xvalue"]; 

    } 
    if(bcenter.y>1000) 
    { 
     [dict setValue:[NSNumber numberWithInt:-10] forKey:@"Yvalue"]; 

    } 
    if(bcenter.x<15) 
    { 
     [dict setValue:[NSNumber numberWithInt:10] forKey:@"Xvalue"]; 
    } 

    if(bcenter.y<15) 
    { 
     [dict setValue:[NSNumber numberWithInt:10] forKey:@"Yvalue"]; 
    } 



} 



} 

-(void)buttonpressed:(id)sender 
{ 

    NSLog(@"sender tag is %d",[sender tag]); 
} 

回答

1

try set target:self action:buttonpressed

我想你忘记做这件事,该功能将被解雇当你点击它

[button addTarget:self action:@selector(buttonpressed:) forControlEvents:UIControlEventTouchUpInside];