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月30日火曜日
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
グローバル変数的な使い方ができます。
ヘッダファイルに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インタフェースを実装しています。
最初は下記のようにやっていたのですが、上手く動作しませんでした。
★保存時
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現在で上記方法は使用できなくなったようです。
修正してアプリをリリースしなおしました。
あのパスワードを入力するダイアログみたいなやつ。
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日程度かかるようですね。
ステータスが「Waiting For Review」から「Processing for App Store」になるまでの期間とします。
アプリA
新規リリース
10日間
アプリB
新規リリース
9日間
アップデート
8日間
平均すると9日程度かかるようですね。
登録:
投稿 (Atom)