2011-09-08 5 views
0

何らかの理由で、私のUIButtonとのやりとりが一度しか動作しません。私はIBActionとIBOutletの両方で "addTarget"を試してみました。なぜ私は考えていない。ボタンタッチのみが一度動作します

コンテキスト:

BaseViewController ViewController1

- (IBAction) button_touched:(id)sender; //<-- Declared here, but not implemented 
- (void)userInputReceived:(BOOL)bSuccess; //<-- Declared here, but not implemented 

:私は "addTarget" を試みるが、それはどちらか(最初の作品に触れて動作しない場合BaseViewController

- (IBAction) button_touched:(id)sender; //<-- Implemented here 
- (void)userInputReceived:(BOOL)bSuccess; //<-- Implemented here 

はまた、これは、 2番目ではありません)

"button_touched"メソッドで

[someOtherClassObject doSomethingWithMyView:self]; 

単純に、メッセージボックスをポップアップし、ユーザー入力を取得し、その後のViewControllerにコールバッククラス:

(インサイドSomeOtherClass)ViewController1(VC1)、私はこのような別のクラスへの呼び出しを行います:

-(void)doSomethingWithMyView:(BaseViewController*)vc 
{ 
    // Do Something 
    [vc userInputReceived:TRUE]; 
} 

このワークフローが一度実行されると、button touchは再び「button_touch」メソッドを呼び出すことはありません。私が何をしても、私はこれをもう一度呼び出すことはできません。

人気のあるBBSフォーラムのスレッドでは、このような問題は、あなたが思っているオブジェクト(vc1)を持っていないことに起因する可能性があると述べています。だから、私はNSLog( "instance:%p"、self)のようなインスタンスを多数の場所に記録していました。

アイデアをいただければ幸いです。これは非常にイライラしています。

+0

を追加し、あなたのbutton_touchedからすべてのコードを投稿することができますか?同様に、ボタンをIBActionにどのくらい正確に接続しましたか、どのような接触が求められていますか? – Jamie

答えて

0

暗いところで撮影されたかもしれませんが、他のオブジェクトの中にメッセージが表示されているために、ビューコントローラのビューが最初のレスポンダステータスを失っている可能性があります。

あなたの文の後に試してみてください。方法:

[vc userInputReceived:TRUE]; 

ラインに

[[UIApplication sharedApplication].keyWindow makeFirstResponder:vc.view]; 
+0

良い考えですが、ダイスはありません。私はそれが何であるかを最終的に考え出しました。そして、誰も私のコードを見なくてもそれを見つけられなかったでしょう。ただし、他の誰かが同様の問題を抱えている場合は、コードパスを慎重に確認してください。私は、あるサブクラスではクリアする必要があったベースクラスのオブジェクトをクリアしていましたが、もう一方のサブクラスではクリアしませんでした。このデータの消去は、後続のメッセージが起動されない原因となります。メッセージを送信する前にnilをチェックしました。恐ろしい、私は知っている、と私は多くの時間を無駄にしないことを望むが、うまくいけば、これは誰か他の時間を節約します。 :) – thephatp

関連する問題