2009-05-04 74 views
0

这真是太简单了!我错过了一些东西,并试图修复它,我筋疲力尽。希望有人可以提供帮助。Iphone UIButton不能正常工作

CharacterView.m中的Button工作,但在CharacterMale.m中嵌套的按钮没有。我没有使用IB,所有事情都是按照步骤完成的。

CharacterView.m被用作容器

///////////////////////////////////////////////////////////////////////////////// 
CharacterController.m 
///////////////////////////////////////////////////////////////////////////////// 
#import "CharacterController.h" 
#import "CharacterView.h" 

@implementation CharacterController 

- (id)init { 
    NSLog(@"CharacterController init"); 
    self = [ super init ]; 
    if (self != nil) { 
    } 
    return self; 
} 

- (void)loadView { 
    [ super loadView ]; 
    characterView = [ [ CharacterView alloc ] init]; 
    self.view = characterView; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
} 


- (void)dealloc { 
    [characterView release]; 
    [super dealloc]; 
} 

@end 

///////////////////////////////////////////////////////////////////////////////// 
CharacterView.m 
///////////////////////////////////////////////////////////////////////////////// 

#import "CharacterView.h" 
#import "CharacterMale.h" 

@implementation CharacterView 

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
     characterMale = [ [ CharacterMale alloc ] init]; 
     [self addSubview: characterMale]; 

     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     button.frame = CGRectMake(0, 200, 200, 100); 
     [button setImage:[UIImage imageNamed:@"btnCharSelect.png"] forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(ApplyImage:) forControlEvents:UIControlEventTouchUpInside]; 
     [ self addSubview: button ]; 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
} 

-(void)ApplyImage:(id)sender 
{ 
    NSLog(@"CharacterView button works"); 
} 

- (void)dealloc { 
    [characterMale release]; 
    [super dealloc]; 
} 

@end 

///////////////////////////////////////////////////////////////////////////////// 
CharacterMale.m 
///////////////////////////////////////////////////////////////////////////////// 

#import "CharacterMale.h" 
#import "CharacterController.h" 

@implementation CharacterMale 

- (id)init { 
    self = [ super init]; 
    if (self != nil) { 
     UIImage *image = [UIImage imageNamed:@"charMale.png"]; 
     imageView = [[ UIImageView alloc] initWithImage:image]; 
     [image release]; 
     [ self addSubview: imageView ]; 

     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
     button.frame = CGRectMake(0, 0, 200, 100); 
     [button setImage:[UIImage imageNamed:@"btnCharSelect.png"] forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(ApplyImage:) forControlEvents:UIControlEventTouchUpInside]; 
     [ self addSubview: button ]; 

    } 
    return self; 
} 

-(void)ApplyImage:(id)sender 
{ 
    NSLog(@"CharacterMal button works"); 
} 

- (void)dealloc { 
    [super dealloc]; 
} 

@end 
+0

您是否将按钮事件设置为NIB文件中的第一响应者? – balexandre 2009-05-04 18:34:01

+0

NIB文件?我不使用IBuilder。对? – 2009-05-04 18:46:39

+0

您CharacterController在loadView中泄漏characterView – nduplessis 2009-05-04 18:55:06

回答

2

FINALLY !!!!!!

我不得不用initWithFrame初始化所有视图并传入有效的帧rects。初始化应该与控制器一起使用,并且initWithFrame为UIViews传递rects!

characterView = [ [ CharacterView alloc ] initWithFrame:CGRectMake(0, 0, 480, 320)]; 
then 
characterMale = [ [ CharacterMale alloc ] initWithFrame:frame]; 
0

我是新来这过,但你尝试过:UIControlEventValueChanged代替UIControlEventTouchUpInside?

0

charMale.png图片有多大? CharacterMale中的图像和按钮的z顺序是什么?图像可能位于您正在创建的按钮的顶部,防止其被触摸。

希望这是问题。我从来没见过别的可是...

0

请检查您的按钮框架。 您已设置(0,0,200,100);