2009-06-08 15 views
0

私は以下の問題があります: UIViewControllerを持つUIViewですが、カスタマイズされたキーボードのような別のビューがあり、この "キーボード"には別のUIViewControllerが関連付けられています。 私は、このメソッドを呼び出すと、ビューが私の見解では問題なく表示されますが、問題は、このカスタマイズされたキーボードが関連付けられたいくつかのメソッドを持っていることである別のUIView内のUIViewはメソッドを呼び出さない

CustomizedKeyboard *customized = [[CustomizedKeyboard alloc] initWithNibName:@"CustomizedKeyboard" bundle:[NSBundle mainBundle]]; 
    [self.view addSubview: customized.view]; 
    customized.view.frame = CGRectMake(0, 480, 320, 260);  
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    customized.view.frame = CGRectMake(0, 200, 320, 260); 
    [UIView commitAnimations]; 
    [customized release]; 

のように、元のUIViewにこのキーボードを追加しています私は、いずれかのボタンをタッチすると、ボタンが、私は

が得た - [NSCFTypeのbuttonPressed]:認識されていないセレクタはインスタンス 0x1065f80'

誰もがアイデアを持っているに送信されたものをそれは可能性があります? このサンプルプロジェクトを作成して理解しやすくしてください http://www.2shared.com/file/6174665/9c9bbd44/ArchiveFixed.html(ダウンロードリンク) 私は本当に助けに感謝しています。 thx

答えて

1

ビューコントローラを解放しています。何かがそれにぶら下がる必要があります。

0

2つのことがあります。まず、実際にカスタムバンドルを使用していますか?私は一般的に、ここでは特に単純なアプリケーションの場合は、(これを説明するように)渡された見た。次に、すべてのViewの設定が完了するまで、サブビューを追加しないでください。

はこれを試してみてください:

CustomizedKeyboard *customized = [[CustomizedKeyboard alloc] initWithNibName:@"CustomizedKeyboard" bundle: nil]; 
customized.view.frame = CGRectMake(0, 480, 320, 260);  
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
customized.view.frame = CGRectMake(0, 200, 320, 260); 
[UIView commitAnimations]; 
[self.view addSubview: customized.view]; 
[customized release]; 

あなたは限り、あなたは成功し、それは親のスタックに追加されますようカスタマイズしインスタンスを解放しても安全でなければなりません。

0

あなたは、Appleがallocを使用するとき、保持してコピーすることを常に覚えておくべきです。 あなたはこのオブジェクトの生涯責任を負います。コードは正しいようですが、少し異なります。オブジェクトを作成して再配置しますが、コードにこのオブジェクトが必要です。

キーボードビューコントローラのインスタンス を公開しているようですが、クラススコーププロパティを作成し、リリース前にこのプロパティにキーボードビューコントローラインスタンスを追加する必要があります。

このようなサンプルコードを変更しました。 customizedKeyboard @synthisize

例えば

CustomizedKeyboard *customized = [[CustomizedKeyboard alloc] initWithNibName:@"CustomizedKeyboard" bundle:[NSBundle mainBundle]]; 
self.customizedKeyboard = nil; 
[self.customizedKeyboard release]; //prevent retain counts memory leaks 
self.customizedKeyboard = customized; 
[customized release]; 

[self.view addSubview: self.customizedKeyboard.view]; 
customized.view.frame = CGRectMake(0, 480, 320, 260);  
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
customized.view.frame = CGRectMake(0, 200, 320, 260); 
[UIView commitAnimations]; 

それは、この変更を伴う作品でなければなりません。

関連する問題