2009-05-04 11 views
0

これは本当に簡単ですよ!私は何かを逃して、それを修正しようとして疲れてしまった。うまくいけば誰かが助けることができるIphone UIButtonが動作しない

CharacterView.mのボタンは機能しますが、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

+0

NIBファイル?私はIBuilderを使用していません。右? –

+0

CharacterControllerがloadViewのcharacterViewを漏らしています – nduplessis

答えて

2

を見ていませんでした問題...です!!!!!!

initWithFrameですべてのビューを初期化し、有効なフレーム矩形を渡す必要がありました。 UIViewsのコントローラとinitWithFrameを使ってinitを使うべきです!

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

私はもう助けになることはできませんでしたが、うれしく思っています。 –

+0

私が次の起こることに縛られている問題を追記しています:) LOL –

0

として使用されている私もこれに新たなんだが、あなたは試してみました:代わりにUIControlEventTouchUpInsideのUIControlEventValueChanged?

+0

これはうまくいきませんでした:(私はここで死んでいます!) –

0

charMale.pngイメージのサイズはどれくらいですか? CharacterMaleの画像とボタンのzオーダーとは何ですか?イメージが作成中のボタンの上に置かれていて、触れられていない可能性があります。

うまくいけば、これは私が何かはまだ... FINALLY

+0

CharacterMale.mで画像を読み込んでコメントを書きましたが、同じ問題が残っています:(ありがとう、 –

+0

ロングショットですが、ヘッダーファイルも投稿できますか?清潔な再建のために警告がありますか? –

+0

私はそれを解決しました!!!! –

0

ボタンのフレームを確認してください。 (0,0,200,100)を設定しました。

関連する問題