1

ボタンのように動作しない Nib ベースのビューにボタンがあります (ターゲット メソッドが呼び出されることはありません)。ボタンを動的に追加しようとしましたが、役に立ちません。

アプリの構造を説明しようとします (この問題の原因であると思われるため)。適切なデザイン パターンを使用していない可能性があります。

  • ビューAはコントローラーACに関連付けられています。(ルートコントローラーの nib からロードされ、ナビゲーションコントローラーにプッシュされます。)

  • ビュー A には複数のサブビューが埋め込まれています。それらの 1 つを A' と呼びましょう。

  • AC::viewDidLoad メソッドでは:

    3 つの viewController a、b、cを AC のメンバー変数にロードします。

アプリの設定に応じて、これらのコントローラーの 1 つのビューを A' のサブビューとして追加します。

基本的に AC::viewDidLoad メソッドで:

[A' addSubView:(a.view)];

これで、a.view に (タグ付けされた) ボタンができました。そのタグを検索します。ターゲットメソッドを動的に追加します。この時点で、a.view は A' のサブビューとして表示され、ボタンも表示されます。偉大な。

しかし、タッチ インタラクションが発生しないか、タッチ アクションが私の方法以外の誰かによって消費されます。

私は多くのバリエーションを試しましたが、実行が私の方法に到達することはありません。すべての touchUpEvents にターゲットを追加してみました。なし。有効なイベントのコントロール値を確認しましたが、正しいです。そのボタンはどういうわけか単に無効になっています。ビューが 1 つの単純なアプリを作成し、同じことを行ったところ、うまくいきました。ですから、複数のピースを組み合わせる方法と関係があると思います。

何か案は?

Spy++ のようなものがあれば、メッセージ キューが表示され、アプリケーションの代わりに誰がこのメッセージを消費しているかを確認したり、クラス オブジェクトを確認したりできればと思います。私はこのプラットフォームの初心者です。 これに関する私の以前の闘いは、このスレッドにあります。

4

3 に答える 3

5

UIImageView の userInteraction を有効にするだけです...そんなクレイジーなことはしないでください!!!

view.userInteractionEnabled = はい;

于 2010-06-15T22:33:57.573 に答える
4

やっと解決!!!そして見返りに何かを学びました。これを理解するのに数日かかりました。

UIButton オブジェクトが機能しなかった理由は、UIIMageView オブジェクトの場合に次のことがわかったためです。

「initWithImage: このメソッドは、指定された画像のサイズに一致するようにレシーバーのフレームを調整します。また、デフォルトで画像ビューに対するユーザー操作を無効にします。」

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

エラー/警告はありませんでした。静かに無効になります。

解決策: UIImageView とボタンを含むコンテナ UIView オブジェクトを作成して、ボタンが画像に重ねて表示されるようにしましたが、実際には画像の兄弟であり、ダミー コンテナ UIView のサブビューです。

于 2009-06-14T00:01:11.977 に答える
1

簡単な「健全性チェック」... ターゲット/セレクターを割り当てているときに、ボタン変数は nil ではありませんか?

ボタンを押しても押したように見え、何も起こらない... または、ボタンを押しても何も起こらない?

于 2009-06-05T19:47:56.657 に答える