2012年3月26日月曜日

ブログテーマ[Objective-C入門]|サルにもできるiPhoneアプリの作り方


てさて~。ぐいぐい前に~。

前回思いのほかサクっと読めてしまいましたね。
Objective-C入門その11:MyViewController.h一気読み

これは落とし穴の可能性大です。

さっそくその気配を感じていただきましょう。
この記事をサラーっとスクロールしてみてください。

長。

おっと!
×ボタン押さない!

書いてるこっちだって辛いんですよ!
同じ辛さは共有していこうじゃありませんか!
無理矢理ですか!

知ってます。

ま、お茶でも用意していただいて。
ゆるゆるとご覧ください。

MyViewController.m
カスタムビューコントローラークラス、メイン(クラスの実装)

#import "MyViewController.h"
こっちは実装ファイルなので、宣言を読み込みます。

@implementation MyViewController
ここからMyViewControllerクラス、実装の開始です。

@synthesize textField;
@synthesize label;
@synthesize string;
3つまとめてアクセサメソッドの自動生成用コンパイラディレクティブです。
textField、label、string。ヘッダーで宣言した3つをそれぞれ生成指示してます。

で、ここからが長いのですが。
よーく見ると5つのメソッドに分かれています。

1個1個は短そうなので、区切って見ていきましょう。

その1

- (void)viewDidLoad {
宣言もしてないのに実装してるメソッド、来ました。
実はコイツはUIViewControllerで宣言されています。

ビューの読み込みが完了した直後に動くメソッドです。

スーパークラスとしてUIViewControllerを指定した上で、
実装部分でスーパークラスのメソッドを記述する。

つまり、上書きしているわけです。
これをオブジェクト指向的に言うとオーバーライドと言います。


食品着色料でイースターエッグを色付けする方法

// When the user starts typing, show the clear button in the text field.
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
ここら辺は制作者がコメントを書いてくれています。
ビバコメント。何をやっているかがぐっとわかりやすくなりますね。
Objective-C入門その1:まずはコメントの書き方から

どれどれ。。。
ユーザーさんが文字を入力している間に、テキストフィールド内にクリアボタンを表示する。

コレの右側の×のことですね。確かに編集を開始すると出てきます。

テキストフィールドのクリアボタンモードを、UITextFieldViewModeWhileEditingにする。
UITextFieldViewModeWhileEditingは定数ですね。予め決められた値です。

長いわ!

// When the view first loads, display the placeholder text that's in the
// text field in the label.
label.text = textField.placeholder;

はじめてビューが読み込まれた時は、placeholderの文字を表示ラベルの文字として表示する。

何もしないと「Hello, World!」と出てきます。

ではこの文字はドコで設定しているかと言うと、

ビューの設定の方にありました。
確かにplaceholderって書いてあります。
テキストフィールド自体の初期設定のことですね。

}
1個目はここまで。
クリアボタンの設定と、初期表示文字の設定のお話でした。

その2

- (void)updateString {
どっかで見ましたね。
そう、これはちゃんとヘッダーの中で宣言したメソッドです。
Objective-C入門その11:MyViewController.h一気読み


のために使用枕カバーは何ですか

// Store the text of the text field in the 'string' instance variable.
self.string = textField.text;
テキストフィールドのテキストを、stringというインスタンス変数にしまえ。

// Set the text of the label to the value of the 'string' instance variable.
label.text = self.string;
しまっておいたstringを、表示ラベルの文字にセットしろ。

}
バケツリレーのお話でした。

その3

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
またまた宣言もしてないのに実装してるメソッド、来ました。
コイツはUITextFieldDelegateで宣言されています。

// When the user presses return, take focus away from the text field so that the keyboard is dismissed.
やることは、と。

リターンボタンを押した時に、
テキストフィールドからフォーカスを外してキーボードを非表示にしてね。ですね。
ちょっとプログラムっぽく、IF文が書いてあります。

if (theTextField == textField) {
引数で渡されたtheTextFieldがインスタンス変数のtextFieldと同じだったら、

[textField resignFirstResponder];
textFieldをファーストレスポンダー(要はフォーカス)から外し、

// Invoke the method that changes the greeting.
[self updateString];
updateStringメソッドを実行し、

}

return YES;
YESを戻り値として返す。

}
この流れで、キーボードがシュッと隠れます。
調べてみると、
何もしないとテキスト編集時(リターン押下時)にキーボードが隠れてくれないらしく、
コレを書くのがお作法のようです。そのまま覚えちゃいましょう。

その4

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
これまたナニモノかしら?と思うようなメソッドです。
でも名前にtouchが入ってますね。


エッジうつ病ボウルレース

そうなんです。
お待たせしました。
touchを感知するイベントが、まさにこちらでございます。

touchesBeganはタッチ開始を感知
touchesMoved:タッチ後、画面をドラッグを感知
touchesEnded:指を離すか、対象のビューの外に出ると感知
touchesCancelled:電話がかかってきたりして、アプリケーションが非アクティブになると感知

今回は、touchesBeganのみ実装されています。

// Dismiss the keyboard when the view outside the text field is touched.
テキストフィールド以外の場所をタッチされたら、キーボードを隠してね。ですね。

[textField resignFirstResponder];
さっきも出ましたね。第一応答者から外す。つまりフォーカス外しです。

// Revert the text field to the previous value.
textField.text = self.string;
テキストフィールドを前の状態に戻して、

[super touchesBegan:touches withEvent:event];
スーパークラスのタッチ開始メソッドを実行。
注:この書き方が具体的にどうなってんのかイマイチピンときておりません。
とりあえずこう書いておけば良い。ってくらいの認識です。

}
ダメなところタッチしたら処理してね。というお話。

その5

- (void)dealloc {
最後です。これはHelloWorldAppDelegateでも出てきたので瞬殺しておきましょう。

// To adhere to memory management rules, release the instance variables.
// 'textField' and 'label' are objects in the nib file and are created when the nib
// is loaded.
ちゃんと解放しとけ。ですね。

[textField release];
[label release];
[super dealloc];
textField、label、super。解放。

}
後片付けのお話でした。

@end
で、終了。と。

ここまでお読みになったみなさま。ご苦労様でした!


一応、それなりに読めましたね。
タッチっぽいイベントもいよいよ出てきました。

次回は Hello,World! の最終回。main.mの一気読みです。
すぱーっと読み切って次の段階に進みましょう!


今日も"駄文"兼"長文"最後まで読んでいただいてありがとうございます!

☆ペタ大歓迎です、押してくれると転げ回って喜びます☆

☆読者登録大歓迎です、アナタは神様ですか☆

☆こちらもクリックを是非、ニッポンにサルできの流れを!☆
  



These are our most popular posts:

Microsoft Users

今度は、[ページ挿入]ボタンを押したら新しいページが増えていくようにしなくちゃ いけない。それに、[前 ... 先は長いし、急がば回れだよ」 ... プログラム言語には、旧来型 の手続き指向プログラミング、とそれらが発展したオブジェクト指向プログラミングがある 。 read more

らぼなび!: 第 1 回 東京大学大学院 情報理工学系研究科 本位田研究 ...

エージェントの定義も色々あるんですけれども、私は基本的にはオブジェクト指向の次の 技術という観点でエージェント指向を捉えています。 ... でも、ソフトウェアの作り方・ モデリングの仕方・構成法っていうのが、十分追いついていないという状況です。 .... 金 勘定させる、人の管理させるっていうんじゃなくて、やはり私としては、技術で日本は勝負 していかなくちゃなんないとしょうがないなと思います。 ... 一方の「長期的変化」とは、3D ディスプレイなどの新しい周辺装置・サービスの登場、といった長い時間で発生する変化 です。 read more

OOエンジニアの輪! ~ 第 35 回 千葉 滋 さんの巻 ~

今回のインタビューでは、研究内容を中心に語っていただきながら、オブジェクト指向と アスペクト指向の関係性についてもお ... 業務では、GUI ライブラリは買ってきたり、 オープンソースのものを使うから、ライブラリの作り方や中身を知っている必要はない、 ということらしいです。 .... アカデミアの研究者がほとんどですけれど、産業界にもユーザ がいまして、長いこと保守していました。 .... それで、トレンドなら乗らなくちゃいけない なって。 read more

ブログテーマ[Objective-C入門]|サルにもできるiPhoneアプリの作り方

2009年9月22日 ... サルにもできるiPhoneアプリの作り方のObjective-C入門について書かれた記事です。 ... でも、ここでくじけちゃもったいない! お作法なんて、 ... で、ここからが長いのですが。 ... これをオブジェクト指向的に言うとオーバーライドと言います。 read more

Related Posts



0 コメント:

コメントを投稿