スキップしてメイン コンテンツに移動

画面の下の方にある UITextField がキーボードの影に隠れる




画面上に UITextField をいくつか配置したアプリを作っています。
開発中のアプリは要素が多いので説明用にアプリを作りました。

画面の下の方にある UITextField に文字を入力しようとしたら、キーボードの影に隠れてしまって何が入力されているのかがまったくわかりません。

Android アプリも同じことがあったのですが対応方法は簡単です。慣れているからだけかもしれませんが・・・

iOS アプリではどうやって対応するのかを調査しています。といっても検索したらすぐに見つかりました。

参考 : キーボードが表示されたときに画面を動かす

実際に自分で作ってみないと理解できないので、上記ページを参考にしながら作って見ることにしました。



対応方法


  • キーボードが表示されたら UITextField をキーボードの上に移動させる
  • キーボードが非表示になったら元の位置に戻す
  • キーボードの改行が押されたらキーボードを非表示にして元の位置に戻す

懸念点

  • 複数行入力できる場合は改行でキーボードを非表示にすることができない
  • 行数が多いとキーボードの裏にいってしまいそう

やりたいこと


UITextField を上下に配置

画面の下に配置したUITextFieldをタップ

画面の下に配置したUITextFieldをタップするとキーボードが表示されます。しかし入力中のUITextFieldがキーボードの影で見えません。つまり、入力された文字がわかりません。さらに、キーボードを消す手段がありません。

やりたいことは

  • 入力中の文字がわかるようにUITextFieldをキーボードより上に移動させる
  • 入力が終わったらキーボードを非表示にして、レイアウトを元に戻す

条件

  • UITextField には改行は入力できないものとする

追加でやりたいこと

  • 改行が押されたら入力完了とする

やりたいことと対応方法がわかったので、あとは実装するだけ



今日はここまでにします。続きは後日追記します。

コメント

このブログの人気の投稿

Android ロックアプリを作る -調査編 -

Android 端末のスクリーンがOFFになると端末がロックされて、
スクリーンがONになるとロック画面が表示されます。

ロック画面は指の軌跡かパスワードを入力することで解除できます。

このロック画面をアプリとして作ってみたいと思い調査を始めることにしました。

調査の方針としては


色々なロックアプリをダウンロードしてみる。それぞれのパーミッションを見てみる。

という感じです。


色々なアプリをダウンロードしてみる。

まずはロックアプリ特集とかを探してみます。

Google 先生に聞いてみよう > Android ロックアプリ
結構出てきますね。


WidgetLocker LockscreenLockBot ProFロックスクリーン



それぞれのパーミッションを見てみる。

WidgetLocker Lockscreen



android.permission.VIBRATEandroid.permission.DISABLE_KEYGUARDandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.EXPAND_STATUS_BARandroid.permission.GET_TASKSandroid.permission.REORDER_TASKSandroid.permission.SET_PREFERRED_APPLICATIONSandroid.permission.WRITE_SETTINGSandroid.permission.WAKE_LOCKandroid.permission.CALL_PHONEandroid.permission.READ_SYNC_SETTINGSandroid.permission.GET_ACCOUNTSandroid.permission.READ_LOGSandroid.permission.SYSTEM_ALERT_WINDOWandroid.permission.WRITE_EXTERNAL_STORAGEandroid.permission.INTERNETandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATEcom.android.vending.CHECK_LICENSE
LockB…

携帯電話、タブレットの判定にピクセルではなくインチを使う

色々な案件に関わっていると、スマートフォンなのかタブレットなのかの判定をするためにピクセルを使用しているソースを見ることが多くあります。

幅、高さのそれぞれのピクセル数がある値を超えたらタブレットと判定する。


これはだめですよね

HTC j butterfly  はタブレットと判定されることが多くあります。




ディスプレイは約5インチ
w x h : 1080px x 1920px

5インチなので画面サイズが大きいということでタブレットという判定でもいいかもしれない・・・と思ったりしますが7インチ以上をタブレットと判定したい。。。




ピクセル数は画面のサイズ(インチ)とは違います。1080px x 1920px は5インチであるとは限りません。

i9220++ スマートフォン Android 4.0 3G GPS 5.2 インチ800万画素携帯(ブラック)

5.2インチ 画面解像度:960 x 540 pixels QHD screen


HTC j butterfly よりも画面サイズ(インチ)は大きいけれど、ピクセル数は少なくなってます。


ピクセル数で判定するのではなく、インチで判定したほうが正確ですね。



プログラムで画面サイズ(インチ)を計算してみましょう。

ディスプレイ情報を取得する ピクセル数(width, height)を取得するdpi (xdpi, ydpi) を取得する1インチあたりのピクセル数(dot per inch なのでドット数?) インチ(width, height) を計算する画面サイズ(インチ)を計算する
こんな流れになります。他に簡単に取得できる方法があれば教えていただけるとうれしいです。

Activity#onCreateに書きました

// ディスプレイ情報を取得する
final DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

// ピクセル数(width, height)を取得する
final int widthPx = metrics.widthPixels;
final int heightPx = metrics.heightPixels;

// dpi (xdpi, yd…

[Eclipse] Javadoc @author に続く名前を変えたい

JavaDoc の @author に続く名前(保管される名前)を変えたい

一度設定するだけですが、プロジェクト単位で設定する方法ではなくすべてに影響します。



MainActivity.java
Android プロジェクトを新規作成し、Activity名はMainActivityとしました。
CheckStyle を指定してあるのでJavaDocを書かないと警告が出ます。
上図はJavaDocを書いた状態
/**
 * メイン画面
 * @author k-matsuda******(画像にかかれてますけど自動収集されると嫌なのでけしました) *
 */何も設定していないと
@author PCUSER
なんて書かれてしまいます。私のPCは買ったときにショップが決めた名前のままなので・・・
この PCUSER という文字を変える方法をぐぐってみました。簡単にできるんだ・・・というのが感想
eclipse.ini の最後の行に -Duser.name=k-matsuda
を追加して、

 eclipse.exe -clean.cmd
このファイルをダブルクリック(特に根拠はありませんが、クリーンしてみました)

eclipse.ini は eclipse をインストールしたフォルダにありました。

Pleiades all in one を使っているので eclipse.exe -clean.cmd もおないフォルダにありました。



参考 JavaDocの@authorで補完される名前を変更したい [Eclipse] http://tamatamablog.blog.so-net.ne.jp/2007-01-05