この回答に従って、UIButton のタイトルを変更しています。要約すると、ここに私がしなければならないことがあります:
ユーザーがタッチダウンすると、ボタンのタイトルが変わり始めます。
タッチが保持されている間、1 秒ごとに変化し、ユーザーがそれを見ることができるはずです。
ユーザーがタッチアップ (タッチを停止) すると、ボタンのタイトルは最後に保持された値に固定されます。
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 がまだ強調表示されている状態でタイトルを表示する方法。タッチしている間、タイトルは完全に見えません。