お久しぶりです。ジャマです。
超久々のブログですががんばります!

ブログ書いてない間もobjective-Cについては
日々精進しているので新知識を披露していきます。

今回の題材はiphoneのSMSのチャット画面についてです。
iphoneでは簡単に実装しているので自作iphoneアプリで
実装してみました。
結構難しかったんで忘れないように作り方の流れ書いときます。

大まかな流れです。

①吹き出し用のview、MessageViewを作成
・MessageVIewには吹き出しに表示するmessageと日付のdateを持たせます。
・messageの長さから吹き出しの大きさと画像を変更します。

吹き出しの画像は以下5種類を使いました。
(1)huki1.png - messageが1行の時はこの画像
$独学で作成!!金儲けiphoneアプリ
(2)huki2.png - messageが2行の時
$独学で作成!!金儲けiphoneアプリ
(3)huki3_1.png - messageが3行以上の時、一番上
$独学で作成!!金儲けiphoneアプリ
(4)huki3_2.png - messageが3行以上の時、真ん中
$独学で作成!!金儲けiphoneアプリ
(5)huki3_3.png - messageが3行以上の時、一番下
$独学で作成!!金儲けiphoneアプリ

3行以上の時は行数に応じて真ん中の画像を増やします。
これで吹き出しは完成です。

②吹き出しを配列にいれる。
①で作った吹き出しは生成するごとにmutablearrayに
ぶちこんでおきます。

③日付で吹き出しを並び替えます。
配列に入っている吹き出し画像は日付を持つことができます。
生成時にあらかじめ日付をいれておくとこれをもとに並び替えできます。
NSDateのcompare:とかバブルソート等を駆使すると日付ごとに
配列が並びかえれます。

④配列に入った吹き出しを順にスクロールビューに貼付けて行く。
吹き出しのsizeを加算して次の吹き出しのy座標の位置にします。
そうすることで吹き出しが順に表示されます。

だいたいこんな感じです。
出来上がりの画像はっと来ます。
なかなか困難な作業でした。

ソースも出さずかなりはしょってるので
わからないことあったら気軽に聞いて下さい。

$独学で作成!!金儲けiphoneアプリ
お久しぶりです!ジャマです!

今日はiphoneアプリ上の数字を
3桁ごとに区切る方法をについて書きます。
とあるお偉い様からその方法を教えてくれて
頼まれたのでちょろっと書いてみましたニコニコ

結局、どこぞやのプログからソースをコピペするだけなのですが。笑

NSNumber *number = [[NSNumber alloc] initWithInt:1234567];
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setNumberStyle:NSNumberFormatterDecimalStyle];
[fmt setGroupingSeparator:@","];
[fmt setGroupingSize:3];
NSLog(@"%@", [fmt stringForObjectValue:number]);


簡単に言うと、

数字データを指定した形に変換してする

ってことなんです。

setNumberStyle,setGroupingSeparator,setGroupingSize
の3行でどういう形で変換するか指定していると思われます。

そんでstringForObjectValueで数値を変換!!

変数で数字を持ってる場合は

initWithInt:変数名

で変数の数字がたぶんnsstring型でとれるはずです。

NSString * string = [fmt stringForObjectValue:number];

とやってnsstringでとって、
後は似るなり焼くなり好きにして下さいグッド!
お疲れ様です!ジャマです!

最近ずっと開発でつまってたことがありました。
それは

TextViewのキーボードがEnterで消えない

前回キーボードを消すでTextFieldのキーボードを消す方法をお話しました。

しかし、

TextVIewのキーボードは消せない

状態にはまってました。

そこがわかったのでお知らせします!!
参考はこのサイト


ずTextViewとTextFieldの違い

TextView → 複数行を入力するためのView。
そもそもEnterは改行のためにある。

TextField → 1行入力するためのView。
Enter押した時の状態をデリゲートでキーボード消せと指示出せる

この違いのため以下のように処理が違います。


TextView → 文字の変更が起きた時に呼び出されるデリゲードに改行コードがあったらキーボードを消すという処理を書く。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{

if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}

TextField → Enterを押した時に呼び出されるメソッドにキーボードを消すという処理を書く。

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}

どちらも.mと.hでデリゲードをこんな感じでセットしといて下さい。

最後に

TextViewとTextFeildは別物!!

これだけは覚えといて下さい。