3

この回答に従って、UIButton のタイトルを変更しています。要約すると、ここに私がしなければならないことがあります:

  1. ユーザーがタッチダウンすると、ボタンのタイトルが変わり始めます。

  2. タッチが保持されている間、1 秒ごとに変化し、ユーザーがそれを見ることができるはずです。

  3. ユーザーがタッチアップ (タッチを停止) すると、ボタンのタイトルは最後に保持された値に固定されます。

setTitle:forState:を使用して 1 を処理します。

setTitle:forState:を使用して 2 を処理します。これは、タイマーがユーザーのタッチに続いて 1 秒ごとに発火し続ける限り、発生し続けます。

titleForStateを使用して 3 を処理します。ただし、ここでは値が 2 に設定されていません。正しい値を取得しても、まだ 1 つの問題が残ることがあります。 titleForState を使用して読み取ります。(さらに言えば、 UIButton.textLabel.text でさえ間違った値を与えます)

1 - タッチ アンド ホールドの正しい方法に従っていますか? (UIButton のタイトルを設定および読み取るために描かれたタイマー アプローチを使用することを意味します)

2 - はいの場合、UIButton の正しいタイトル値を読み取るには、コードで何を変更すればよいですか?

編集:

上記の3で発生した問題を取り除きました。問題の理由は次のとおりですUIControlState。読み書き中に同じ組み合わせを提供していませんでした。UIControlStateNormal | UIControlStateHighlightedタイトルを書き込み、それUIControlStateNormalを読み返すために使用すると、正しいタイトルの値が返されるはずであり、その逆も同様であると想定していました。残念ながらそうではありません。アプリのロジックを変更して、両方の時点でこれらの状態の 1 つだけを使用する必要があるようにしました。

ただし、主な問題はまだ残っています (上記 2) - UIButton がまだ強調表示されている状態でタイトルを表示する方法。タッチしている間、タイトルは完全に見えません。

4

1 に答える 1

1

UIButton がまだ強調表示されている状態でタイトルを表示する方法。タッチしている間、タイトルは完全に見えません。

コードでタイトル テキストを変更せずに、タッチ イベント中にタイトルが消えるようにボタンが構成されていますか? つまり、タイトルを変更するコードがなくても、それは消えますか?

ボタンを再描画する必要があると思います[button setNeedsDisplay]。タイトル テキストを変更してから呼び出してみてください。

于 2013-02-17T22:40:32.697 に答える