ラベル iPhoneアプリ の投稿を表示しています。 すべての投稿を表示
ラベル iPhoneアプリ の投稿を表示しています。 すべての投稿を表示

2010年11月30日火曜日

UITextViewに枠を追加

UITextViewにUITextFieldのような枠を追加する方法です。

下記のようにすればよいみたいですが、エラーが発生しました。

view = [[[UITextView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)] autorelease];
view.layer.borderWidth = 1;
view.layer.borderColor = [[UIColor blackColor] CGColor];
view.layer.cornerRadius = 8;

[self.view addSubview:view];

下記を追加することで問題解決
#import <QuartzCore/QuartzCore.h>

2010年11月17日水曜日

static変数で情報を共有する

iPhoneアプリの開発で異なるインスタンス間において情報をやりとりする方法です。
グローバル変数的な使い方ができます。
ヘッダファイルにstaticな変数を定義することはできないようなので、実装部に変数を定義します。

ヘッダファイル

@interface TestClass : NSObject {
}

+ (void)setName:(NSString *)name;
+ (NSString *)getName;

@end

実装ファイル

@implementation TestClass

static NSString* _name = NULL;

+ (void)setName:(NSString *)name {
_name = name;
}

+ (NSString *)getName {
return _name;
}

@end

2010年11月8日月曜日

NSUserDefaultsを使ってオブジェトのリストを保存する。

NSUserDefaultsを使って、NSMutableArrayにオリジナルクラスを格納し保存する方法です。

最初は下記のようにやっていたのですが、上手く動作しませんでした。

★保存時
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *array = [[NSMutableArray alloc] init];

for (int i=0; i<100; i++)
{
Player* test = [[[Player alloc] init] autorelease];
test.id = [NSString stringWithFormat:@"%04d", i];
test.name = @"aaaa";

[array addObject:test];
}

[defaults setObject:array forKey:@"TEST"];

NSData* classData = [NSKeyedArchiver archivedDataWithRootObject:array];
[defaults setObject:classData forKey:@"TEST"];

★復元時
NSMutableArray* array = [defaults arrayForKey:@"TEST"];

for (int i=0; i {
Player* player = (Player*)[array objectAtIndex:i];
NSLog( player.id );
NSLog( player.name );
}

■下記のように対応することで上手く動作しました。

保存時の処理を下記のように修正
[defaults setObject:array forKey:@"TEST"];
↓
NSData* classData = [NSKeyedArchiver archivedDataWithRootObject:array];
[defaults setObject:classData forKey:@"TEST"];

復元時の処理を下記のように修正
NSMutableArray* array = [defaults arrayForKey:@"TEST"];
↓
NSData* classData = [defaults dataForKey:@"TEST"];
NSMutableArray* array = [NSKeyedUnarchiver unarchiveObjectWithData:classData];


※ ここで使っているPlayerクラスはNSCodingインタフェースを実装しています。

2010年11月5日金曜日

UIAlertViewにテキストボックスを追加する。

UIAlertViewにテキストボックスを追加する方法です。
あのパスワードを入力するダイアログみたいなやつ。

privateメソッドに下記のAPIがありそれを使うと実現可能だがRejectされてしまった。
(UndocumentedなAPIであるため)

- (UITextField*)addTextFieldWithValue:(NSString*)value label:(NSString*)label;
- (UITextField*)textFieldAtIndex:(NSUInteger)index;
- (NSUInteger)textFieldCount;
- (UITextField*)textField;

十分に調べて使用しなかったせいだが、確実にRejectされるので注意してください。
「見逃された」みたいな書き込みもあったんで、使ってみたが思いっきり却下されました。
(使っても大丈夫な時代もあったみたい?)

~~~追記1~~~

http://discussions.apple.com/thread.jspa?threadID=1674641&start=0&tstart=0
このURLの途中にある
TextAlertView.h
TextAlertView.m
というクラスで実現できました。

そのまま流用したらダイアログの位置が上部に行き過ぎていたり、テキストボックスが横にはみだしてしまったりしたので少し修正。
#define kUITextFieldHeight 30.0
#define kUITextFieldWidth 260.0 → 追加
#define kUITextFieldXPadding 12.0
#define kUITextFieldYPadding 10.0
#define kUIAlertOffset 100.0 → 10.0 修正

layoutSubviewsの「alertWidth - 2.0*kUITextFieldXPadding,」の部分を「kUITextFieldWidth」に修正

あとはUITextFieldの透過が気になったので、「myTextField.alpha = 0.75;」をコメントアウト

これでリリースしてみました。

~~ 追記2 ~~
無事AppStoreにリリースされました。

~~ 追記3 ~~
2011/12/06現在で上記方法は使用できなくなったようです。
修正してアプリをリリースしなおしました。

2010年10月20日水曜日

iPhoneアプリのバイナリアップデートからApp Storeリリースまでの期間

iPhoneのアプリを作成して、バイナリをアップロードしてからApp Storeに並ぶまでの期間です。

ステータスが「Waiting For Review」から「Processing for App Store」になるまでの期間とします。

アプリA
新規リリース
10日間

アプリB
新規リリース
9日間
アップデート
8日間

平均すると9日程度かかるようですね。