2012-03-11 6 views
3

私はMacOSのを(携帯電話ではない)を標的、XCodeの4.1を使用して客観Cで簡単なプロジェクトを書いていると、次のような問題に遭遇している:株式の上に座って、私のボタン(NSButtonのCocoa:クリックするとNSButtonが消えます。まだアクティブしかし

ワンNSView)をクリックすると、断続的に消えます。それはもはや描かれず、その背景に背景が表示されます。これは意図された動作ではなく、たまに1回だけ発生します(たぶん20回のクリックのうちの1回)。特に奇妙なのは、ボタンがまだアクティブであることです。ユーザーは、ボタンを表示する場所をクリックすることができ、正しいアクションが実行され、ボタンが再び描画されます。ウィンドウのサイズを変更すると、ボタンが再び描画されます。

  1. がクリック処理の最後にSetNeedsDisplay呼び出しを追加します。

    私が働いていたいずれも、以下の修正を試みてきました。

  2. 無関係なアニメーションループにSetNeedsDisplay呼び出しを追加します。これは貧弱な選択であり、ボタンがちらつきを引き起こし、ボタンが使用されたときに最終的にクラッシュに至った。いくつかの同期では、これは回避策としてハック可能性がありますが、根本的な問題には対処できません。

何が起こっているか、どのように対処していいですか?ありがとう!

編集:これはどうして起こっているのか分かりませんが、回避策を見つけました。消えているボタンのすぐ下に重複ボタンを作成する。描画されていない場合でも、クリックはトップボタンに移動します。確かに、しかし効果的なKludge。

+2

イメージボタンですか?別のイメージがありますか?どのタイプのボタンですか? –

+0

ちょうど標準のNSButton - 私は丸いrectまたはプッシュを使用したかどうか覚えていないことができます。画像は関連付けられていません。 – tsellon

+0

あなたはどのような方法でもカスタマイズしないと言っています。クリック処理機能を投稿できますか? –

答えて

3

最も可能性の高いシナリオは、ボタンとその前にあるビューの両方が階層になく、同じスーパービューを持つことです。その場合、描画動作は未定義です。

ボタンが、その前にあるビューの子であることを確認する必要があります。コードでは、[parentView addSubView:yourButton]を呼び出してこれを行います。インターフェースビルダーでは、そのボタンを横にではなく、その中にドラッグするようにする必要があります。

+0

情報ありがとう!それを知らなかった。しかし、この場合に起こっているようには見えません。重複する兄弟ビューはありません。ボタンは階層の一番下にあります。 – tsellon

+0

どこかでnibファイルをオンラインで投稿できますか? –

関連する問題