逆引きObjective-C for iPhoneアプリ

≫ 逆引きObjective-C for iPhoneアプリ ≫ iPhoneアプリ開発 UI部品 ≫ UITextField:テキストの入力 ≫ UITextFieldの入力文字数を制限する

UITextFieldの入力文字数を制限する

UITextFieldにはmaxlengthのような便利なプロパティがありません.
入力文字数を制限するにはテキストが入力されたときのイベントを取得して入力を制御する必要があります.
具体的にはtextField:shouldChangeCharactersInRange:replacementString:メソッドを実装します.このメソッドはテキストが編集されたときに呼ばれます.戻り値として真を返すとその編集が有効になり,偽を返すと編集が無効になります.
つまり最大文字数をオーバーする入力があった場合は編集を無効にすることで入力文字数を制限することができます.

Objective-Cサンプルプログラム

UITextFieldの入力文字数を制限するサンプルプログラムを以下に示します. 以下のサンプルではtextField:shouldChangeCharactersInRange:replacementString:メソッドを実装するためにUITextFieldDelegateプロトコルを指定しています.

ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate>

@end

ViewController.m

#define MAX_LENGTH 8

- (void)viewDidLoad
{
    [super viewDidLoad];

    // UITextFieldのインスタンスを生成
    CGRect rect = CGRectMake(10, 10, 200, 25);
    UITextField *textField = [[UITextField alloc]initWithFrame:rect];

    // 枠線のスタイルを設定
    textField.borderStyle = UITextBorderStyleRoundedRect;

    // デリゲートを設定
    textField.delegate = self;

    // UITextFieldのインスタンスをビューに追加
    [self.view addSubview:textField];
}

/**
 * テキストが編集されたとき
 * @param textField イベントが発生したテキストフィールド
 * @param range 文字列が置き換わる範囲(入力された範囲)
 * @param string 置き換わる文字列(入力された文字列)
 * @retval YES 入力を許可する場合
 * @retval NO 許可しない場合
 */
- (BOOL)textField:(UITextField *)textField
    shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // すでに入力されているテキストを取得
    NSMutableString *text = [textField.text mutableCopy];

    // すでに入力されているテキストに今回編集されたテキストをマージ
    [text replaceCharactersInRange:range withString:string];

    // 結果が文字数をオーバーしていないならYES,オーバーしている場合はNO
    return ([text length] <= MAX_LENGTH);
}

/**
 * キーボードでReturnキー選択時のイベントハンドラ
 * @param textField イベントが発生したテキストフィールド
 */
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    // キーボードを隠す
    [self.view endEditing:YES];

    return YES;
}

サンプルプログラム実行結果

Objective-Cサンプルプログラムの実行結果は以下のようになります.(8文字以上は入力できません.)

文字数制限の結果

Objective-Cのおすすめ書籍

Objective-CでiPhoneアプリを作る際に読んだ本です.よかったら参考にしてみてください.私にとってはかなり役に立ちましたよ!

iPhoneプログラミングUIKit詳解リファレンス

UIKitの詳細リファレンスとしては最高の書籍だと思います.
UIKitに特化した構成となっており,読み物としてもリファレンスとしても使えます.


詳解 Objective-C 2.0 第3版

黒本の通称を持つ良書です.
Objective-Cの基礎となる部分をガッチリ押さえられます. プログラミング初学者が読むには敷居が高いですが,仕事でObjective-Cを書く人は絶対に読んでおいたほうがいいです.

逆引きObjective-C サイト内検索

Objective-C入門

構文

  • データ型
  • 演算子
  • 条件分岐とループ
  • 定数
  • クラスとメソッド
  • プロパティ
  • プロトコル
  • プリプロセッサ
  • ブロック構文
  • 例外処理
  • More...

基本オブジェクト

  • 文字列
  • 日付・時刻
  • 配列
  • ディクショナリ
  • 数値
  • URL・パス
  • タイマー
  • スレッド
  • 通知
  • クラス・メソッド
  • More...

iPhoneアプリ開発

UI部品

  • UIActionSheet
  • UIAlertView
  • UIButton
  • UIImageView
  • UILabel
  • UIScrollView
  • UISlider
  • UISwitch
  • UITextField
  • UIWebView
  • More...

UI部品の設定

  • フォントの設定
  • 色の設定
  • 画像の設定
  • More...

アニメーション

  • UIViewアニメーション
  • Core Animation
  • More...

イベント

  • タッチイベント
  • More...

リンク

  • C言語関数辞典
  • 逆引きSQL構文集
  • LaTeXコマンド集
  • gnuplotコマンド集
© Copyright 2012 Kojo Sugita. All Rights Reserved
サイトマップ | 逆引きObjective-C for iPhoneアプリ