質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • Xcode

    4828questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Objective-C

    1254questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

TextFieldの文字が復帰後表示されなくなる

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 772

exampapa

score 4

前提・実現したいこと

xcode8.2.1のObjective-cで質問です。
textfieldをViewControllerに設置しているのですが、
ホームボタンでバックグラウンドに移行した後、
再度起動(復帰)させると、textfieldに入力していた文字が消え、
それ以降入力しても文字が表示されない(文字は入力されている)のですが、
これを回避する方法はありますでしょうか?
どこかでtextfieldを初期化すれば良いとは思うのですが、
復帰時にviewDidAppearに引っかからないようで、どうすればいいかと悩んでいます。

AppDelegateのapplicationDidBecomeActiveで何か設定すれば良いのでしょうか?

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

ホームボタンでバックグラウンドに移行した後、 
再度起動(復帰)させると、textfieldに入力していた文字が消え

通常はアプリを終了していなければ消えることは無いと思いますが、どのようなコードを書いているか載せていただくことはできますか?

更新は以下のサイトのようにすればできます。
[iOS] アプリがフォアグラウンドになったタイミングで画面を更新する

回答追記

s

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/17 00:10

    _Kentarouさん、アドバイスありがとうございます。
    通常は消えることは無いというアドバイスだけでも助かります。
    そこでコードのどこかに原因があると考え、コードを記載するために不要なコードをどんどん外していった所、どうすればこの症状が発生するか絞り込む事ができました。
    ストーリーボードで以下の画面構成を組んだ時に発生します。

    0.Single View Applicationでプロジェクトを作成します
    1.Tab Bar Controllerを設置しrootにします
    2.これにNavigation ControllerをEmbedしたViewControllerを接続します
    3.このViewControllerにText Fieldを設置します
    4.この状態で実行し、TextFieldに適当な文字を入力した後、一旦Homeでアプリをバックグランドにした後、再度アイコンをクリックして起動するとTextFieldの文字が消えて入力した文字が見えなくなります

    コードは何も書かなくても、この構成で再現できました。
    このやり方のどこかに間違いがあるのでしょうか?

    キャンセル

  • 2017/01/17 08:55

    同じ手順で作ってみましたが、手元では再現しませんでした。
    もしかすると、UITextFieldではなくてUITextViewを使用してませんか?

    キャンセル

  • 2017/01/17 21:26

    _Kentarouさん、何度もお手間をおかけして申し訳ございません。
    確かにUITextFieldを使っているのですが、再現しないと聞き、もう一度手順を確認してみた所、もう一ヶ所手順がありました。

    →UITextFieldのBorder StyleをデフォルトのRound StyleからLine Styleに変更

    でした。現象はRound Style以外の場合に発生し、色々検証してみるとVertical AlignmentがCenterから復帰後はTopになってしまうため消えるように見える為のようなのです(縦サイズを大きくするとTopで表示されている)。
    コードでcenterを指定しても同様となります。
    現象の再現及び解決方法がわかれば助かるのですが・・・

    キャンセル

  • 2017/01/17 23:28

    こちらでも再現したので、回答に回避方法を記載しました試してみてください。

    キャンセル

  • 2017/01/18 08:31

    _Kentarouさん、ご回答ありがとうございます。
    完璧に改善されました。
    質問前に色々調べたのですが見つからず(そもそもここで質問しなければ原因を絞り込めなかった)、
    また、改善方法については全く心当たりのないものでした。
    的確に回答できる_Kentarouさんのスキルに感服いたします。
    本当にありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • Xcode

    4828questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • Objective-C

    1254questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。