2009-06-03 4 views
1

カスタムヘルプを提供するためにアプリに情報ボタンを追加しようとしています。iPhone SDK 2:プログラムで情報ボタンを追加する

代わりのペン先にボタンを追加し、コントローラにイベント(touchUpInside)を連結する、私は、プログラムボタンを追加することを決定しました。ボタンが表示されます。ボタンに触れたときに実行されるターゲットイベントハンドラを追加すると動作しません。私のメソッド(doHelp)がボタンに触れて呼び出されていないこと。

私がデバッグしたとき、イベントはボタンに登録されていません!コードは例外をスローしませんが。ここで

は、ビューからコードスニペットです:

// Create a Button to get Help  
    UIButton *helpButton = [UIButton buttonWithType:UIButtonTypeInfoDark ] ; 
    buttonRect = helpButton.frame; 

    // CALCulate the bottom right corner 
    buttonRect.origin.x = rect.size.width - buttonRect.size.width - 8; 
    buttonRect.origin.y = rect.size.height - buttonRect.size.height - 8; 
    [helpButton setFrame:buttonRect]; 

    [helpButton addTarget:self action:@selector(doHelp:) forControlEvents:UIControlEventTouchUpInside]; 
    [helpButton setEnabled:TRUE]; 
    [self addSubview:helpButton]; 

........

// Another METHOD ELSEWHERE in the VIEW object 
-(void)doHelp:(id)Sender 
{ 
    [self setHelpNeeded:TRUE]; 
    [self setNeedsDisplay]; 
} 

私が間違って何をしてくださいでしょうか? 私はSDKのヘルプとサンプルを見て、本当にうんざりしています! 目の別のペアが助けてくれることを願っています! :-)

このコードスニペットは、必要な場合に備えてビューオブジェクトにあります。 最初の2人のレスポンダを支援するためにdoHelpを追加しました...ありがとうございます。

** UPDATE 6/4/09 ** - 私が働いていた全ての夜と何をしようとしています。自分のメソッドが呼び出されることはないので、メソッドセレクタを設定した方法に何か問題があると思います。他のすべてはうまく見えます。 NIBファイルを使用しても動作しません。私はボタンにタグを付け、それを取り出してメソッドセレクタを追加しましたが、無駄にしました。私が間違っている何か基本的なことがある... Argh !!! アイデア、誰ですか?

+0

これまで何も働いていなかったので、それをNIBベースの方法に戻します。 基本的には、ビューとコントローラーのコンボを作成し、そこから移動します。 –

+0

話が早すぎる...それは仕事をしなかった。私はコントローラーをセットアップした方法と関係があります....私は次のようにしています。 –

答えて

4

最終的に解決しました!それに何かを学んだ。これを理解するには数日かかりましたか?

「initWithImage:私はそのUIIMageViewオブジェクトの場合、見つけたので、私のUIButtonオブジェクトが働いていなかった理由だった

。このメソッドは、指定した画像のサイズに合わせて、受信機のフレームを調整また、既定では、イメージビューのユーザー操作を無効にします。

、私のUIButtonはUIImageViewコントロールのサブビューとして割り当てられていました!

エラーや警告はありませんでした。それはただ静かに無効になる。

ソリューション:ボタンは、画像上にオーバーレイが、それは実際に画像の兄弟とダミーコンテナのUIViewのサブビューであるとして表示されるようになりましたUIImageViewとボタンが含まれているコンテナのUIViewオブジェクトを作成しました。

+0

マスターチーフ、 よりksはこれを投稿するためのものです...解決策はこれでも、UIImageViewのユーザー対話を可能にすることもできますが、これを忘れるのは簡単です。あなたのポストを見つけたとき、私は困惑しました。 温もてものについては、 アビナビ – Abhinav

1

それはしばらくの間をされているが、私はあなたのaddTargetがdoHelpを含むオブジェクトを取る必要があると思う:セレクタを、そのよう:同じビュー内のどこかで想定し

[helpButton addTarget:self action:@selector(doHelp:)]; 

はあなたが持っている:

- (void)doHelp: { } 

addTargetにnilを渡すと、そのセレクタを受信者に送信していないことを意味します。

+0

私のコードで私は目標に自分自身を持っています。それはまだ動作しません。私はただをしようとしていたオプションを指定すると、ターゲットにnilが指定されていればレスポンダチェーンの上にアクションが送信されます –

+0

私のターゲットメソッドは です。

 -(void)doHelp:(id)Sender { \t [self setHelpNeeded:TRUE]; \t [self setNeedsDisplay]; } 
メソッドシグネチャに問題はありませんか? –

0

問題はaddTarget:nilです。アクションのために与えたセレクタは、ターゲットに送信するメッセージだけです。あなたはそれを目標にしなかったので、そのメッセージで何をすべきかは分かりません。そこにnilの代わりにselfを渡したいと思うかもしれません。

+0

UR Right。 :-( –

0

同じ問題の解決策を探しているうちに、私はこれを見つけました。少なくとも3.x SDKでは、UIImageViewのUserInteractionEnabledプロパティをYESに設定するだけです。

問題についての発見を投稿していただきありがとうございます。私はその問題を見ることさえ考えませんでした。

0

私はボタンがビューの外で同様の問題があったと

何ができますが、そのボタンを見るために、親ビューの背景色を設定することですタップメッセージを受信しませんでしたが、それ以外である:

... 
[buttonParentView addSubview: myButton]; 
buttonParentView.backgroundColor = [UIColor cyanColor]; 
関連する問題