テキストフィールドの入力チェック

今回は、テキストフィールド(UITextField)で入力チェックを行う方法について考えてみよう。

PC用のアプリやWebシステムの場合、「OK」ボタン等で確定させる時にチェックを行うのが最も簡単な方法である。
しかし、iPhoneアプリの場合、明確な確定操作がないようなインターフェースも多い。(例えば、テーブルビューの設定画面で、入力した時点で保存されるようなパターン)

このような場合、無効な文字は入力できないような制御をかける方法が有効である。今回は、この方法について説明する。

まず最初に、ビューが読み込まれたタイミングで、テキストフィールドのデリゲートにビューコントローラを設定する。

- (void)viewDidLoad {
  [super viewDidLoad];
  // テキストフィールドのデリゲートを設定
  txtComment.delegate = self;
}

※txtCommentはテキストフィールドのアウトレットとする

続いて、ビューコントローラにインターフェースを実装する。

@interface XXXXViewController : UIViewController {
  :
  :
}

これでテキストフィールドで発生したイベントをXXXXViewControllerクラス内で処理できるようになった。
このイベントの一つに、入力値変更時のイベントがあり、このメソッドの中で入力チェックを行えば良い。関数の戻り値をYESにすると入力を許可し、NOにすると入力を拒否する。

// テキストフィールドの入力値変更イベント
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  NSString *strNgWord = @"!\"\\#$%&'()@[]{}|^~=;:\_?<>,/-*."; // チェック対象の文字を複数定義

  // 文字数チェック
  if (8 < range.location + range.length + [string length]) {
    // 文字数制限を超える場合は入力取り消し
    return NO;
  }

  // 無効な文字列が含まれていないかどうかチェック
  for (int i=0; i<[strNgWord length]; i++) {
    // チェック対象の文字を設定
    NSString *strCk = [strNgWord substringWithRange:NSMakeRange(i, 1)];
    // 入力値がNGワードと一致する場合
    if ([string isEqual:strCk]) {
      // 入力取り消し
      return NO;
    }
  }

  // 入力許可
  return YES;
}

上記の例では、
 ・8文字を超える入力を禁止
 ・strNgWord変数に定義された文字のみを禁止
という制御を行っている。

みなみに、ユーザーインターフェースのガイドラインでは、何も反応がない動きはNG(ボタンを押しても反応しない等)らしいので、この時のエラーはどうなんだろ・・・?

決して申請済みのアプリで使っている訳ではないので、使用はあくまで自己責任でお願いします。
不安ならエラーメッセージをラベル表示するとかした方がいいかも。。



このエントリーをはてなブックマークに追加

テーマ : プログラミング
ジャンル : コンピュータ

コメント

非公開コメント

iPhoneアプリ紹介
パズルナビ for パズドラ 2016
最強のコンボツール!
colorization-large-icon.png

スクリーンショットを読み込むとコンボを自動計算してくれるパズドラの攻略アプリです。


AirRuler
(簡易距離計)

リモートで簡単に距離を測定できるアプリ!
colorization-large-icon.png

目標地点に向けてiPhoneを傾けるだけで簡単に距離を測定できます。ゴルフの距離測定機能付きパターの代わりにも使えます。


補色残像アート
~見えない色が見えてくる~
白黒なのにカラーに見えてしまう不思議な映像を体験しよう!
colorization-large-icon.png

補色残像という目の錯覚を利用して、白黒写真がカラーに見える不思議な映像を作成できます。作成した映像は、アニメGIFに変換したり、Twitterに投稿することもできます。


タイピング革命
フリック練習はタイピング革命で!ネットランキングで盛り上がろう!
icon-l-typing.jpg

オンラインランキング上のプレイを閲覧できるリプレイ機能付き!フリック入力とローマ字入力に完全対応したタイピング練習アプリです。初心者も安心のトレーニングモード付き。

★なんと!あのAppBank様に紹介して頂きました!!
typing-sale-led.gif


簡単3Dカメラ
iPhoneで手軽に3D写真を楽しもう!平行法/交差法/アナグリフ/グラグラ3Dに対応。
icon-l-3d.jpg

2枚の写真を撮影するだけで、裸眼で立体視できる3D写真が作成できます。85円でステレオ写真もアナグリフも楽しめるのは簡単3Dカメラだけ!

プロフィール

あらきんぐ☆

Author:あらきんぐ☆
はじめまして。あらきんぐです。
4月からiPhoneを購入し、その魅力に取り付かれて、気がついたらアプリ開発の道へ!仕事でプログラム開発をしていますが、基本「動けばOK!」な適当エンジニアです。適当でもアプリは作れる!っていう事を、ブログを通じて証明していきたと思います。

最新記事
最新コメント
最新トラックバック
カテゴリ
FC2カウンター
全記事表示リンク

全ての記事を表示する

Twitter
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
アクセスランキング
[ジャンルランキング]
コンピュータ
317位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
46位
アクセスランキングを見る>>
オススメ商品
iPhone/iPodと一般オーディオを繋ぐ貴重なアイテム!
アプライドオリジナルアイテム MBB...

アプライドオリジナルアイテム MBB...
価格:3,980円(税込、送料別)

開発中級者にオススメ!「こんなことができるんだ!」と驚かされる一冊
【送料無料】iPhone...

【送料無料】iPhone...
価格:1,500円(税込、送料別)

安い!シンプル!カッコいい!
希少なiPhone対応キーボード内蔵ケース