ボタンを押したらローカライズが解けた

印象派なうをアップデートするために英語版の動作確認をしていたら、”Clear”ボタンを押すと”クリア”ボタンに文字列が変わってしまう現象が見つかりました。

調べたところ、原因と対策がわかったのでメモしておきます。

原因

以下のように UIButton のローカライズをすると、ボタンを押したら文字列が xib ファイルで設定されている文字列に変わってしまいます。
clearButton.titleLabel.text = NSLocalizedString(@"Clear", @"クリア");

対策

下のようにすれば、大丈夫です。
[clearButton setTitle:NSLocalizedString(@"Clear", @"クリア") forState:UIControlStateNormal];
[clearButton setTitle:NSLocalizedString(@"Clear", @"クリア") forState:UIControlStateHighlighted];

ボタンが Disable 状態にもなるときは、さらに次を追加すれば良いです。
[clearButton setTitle:NSLocalizedString(@"Clear", @"クリア") forState:UIControlStateDisabled];

ボタンを押したらローカライズが解けた” への2件のフィードバック

  1. hiroakit のコメント:

    ボタンが押下され続ける事を考慮して,以下のような記述も必要かと存じます,

    [clearButton setTitle:NSLocalizedString(@”Clear”, @”クリア”) forState:UIControlStateSelected];

    • osawa のコメント:

      ご指摘ありがとうございます。
      ただ、動作確認したところ、ボタンを押下し続けても UIControlStateSelected の状態にはなりませんでした。setSelected などを呼ばなくても UIControlStateSelected の状態になるのでしょうか??

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください