Hatena::Groupiphone-dev

iPhone will be interactive!

|

2009-01-05

カメラボタンでカメラを開くと Reject される 13:36 カメラボタンでカメラを開くと Reject される - iPhone will be interactive! を含むブックマーク はてなブックマーク - カメラボタンでカメラを開くと Reject される - iPhone will be interactive! カメラボタンでカメラを開くと Reject される - iPhone will be interactive! のブックマークコメント

アプリ二本目がモロにこの審査基準にハマったのですが、やっと何が引っかかったのか分かったので共有します。

まず、カメラボタンってのは、UIBarButtonItem などで initWithBarButtonSystemItem:UIBarButtonSystemItemCamera したときに表示される、以下のアイコンのボタン。

f:id:yossy44:20090105132331j:image

で、ここで迂闊に「お、これはカメラを表示するボタンだな」と思って、カメラモードのフォトピッカー (sourceType を UIImagePickerControllerSourceTypeCamera に設定した UIImagePickerController) を表示すると、iPhone Human Interface Guidelines に沿ってないと言われて Reject される。

おいおいどう見ても使い方間違ってないだろ、と思って抗議してたら、「正しい使い方は FaceBook アプリを参考にして下さい」と言われたので見てみると、どうやら、このカメラボタンは、以下のスクリーンショットのように、「『フォトアルバムから選択する』と『カメラで撮る』の項目があるアクションシートを開く」ためのものらしい。

f:id:yossy44:20090105132329j:image

正直、カメラボタン押したらカメラだろ、と思うし、現にそうなってるアプリも何故か沢山出回っているんだけれども、ガイドラインに沿ってないと言われたらこちらとしては何も言えないので、仕方なく自分でアイコン作ることにします。でもどう考えてもこのアイコンに酷似したものになっちゃいそうなんだけど。。。

fladdictfladdict2009/01/05 18:23ちょwww ToyCamera Rejectの危機wwww

ktakayamaktakayama2009/01/06 09:33これはヒドい、まさにガイドライン脳wですね。
Camera って名前のアイコンなのにカメラ起動したらダメとは。

2008-12-30

IdairaIdaira2012/05/30 07:00If you're reaidng this, you're all set, pardner!

pgrvcbpgrvcb2012/05/30 19:23WR7t39 <a href="http://qjcycdvsduvx.com/">qjcycdvsduvx</a>

gcvkzrxgcvkzrx2012/05/30 22:48b1tWk9 , [url=http://tptsppzbgwfm.com/]tptsppzbgwfm[/url], [link=http://tjehssfsxhsv.com/]tjehssfsxhsv[/link], http://ombvvprrplow.com/

kidvptlkidvptl2012/06/01 00:06o2X3ku <a href="http://kkyqmhqegdzw.com/">kkyqmhqegdzw</a>

uflcthuflcth2012/06/01 02:36PIxIkS , [url=http://adeatsplqexu.com/]adeatsplqexu[/url], [link=http://vcefimotlqnw.com/]vcefimotlqnw[/link], http://hcivgmmhqmyt.com/

2008-12-12

祝・初 iPhone アプリ「InfinitySheep」発売! 14:16 祝・初 iPhone アプリ「InfinitySheep」発売! - iPhone will be interactive! を含むブックマーク はてなブックマーク - 祝・初 iPhone アプリ「InfinitySheep」発売! - iPhone will be interactive! 祝・初 iPhone アプリ「InfinitySheep」発売! - iPhone will be interactive! のブックマークコメント

詳しくは以下で。

第二弾もすぐ申請します!

2008-12-10

Google Toolbox for Mac が素敵かも 17:35 Google Toolbox for Mac が素敵かも - iPhone will be interactive! を含むブックマーク はてなブックマーク - Google Toolbox for Mac が素敵かも - iPhone will be interactive! Google Toolbox for Mac が素敵かも - iPhone will be interactive! のブックマークコメント

XML実体参照, 文字参照を自前でアンエスケープする必要があって、CoreFoundation には CFXMLCreateStringByUnescapingEntities というのがあるんだけれど残念ながら iPhone SDK には入っていない。

そこで誰か作ってないかなーと探していると、Google 先生が作っているじゃありませんか。

これの、Foundation/GTMNSString+HTML.h で、NSString に追加されている gtm_stringByUnescapingFromHTML を使うと、一発でできた。

しかも、この Google Toolbox for Mac 、俺が超苦労して実装した進捗通知付きの NSInputStream が入っていたり、Cocoa でつまづく系のユーティリティが一通り揃ってそうでかなりよさげな予感。コードを見る限り、ちゃんと iPhone SDK にも対応してるぽい。ライセンスApache License なので、次から、困ったらとりあえずここを探してみることにしよう。

NSInvocation の使い方と注意点 17:28 NSInvocation の使い方と注意点 - iPhone will be interactive! を含むブックマーク はてなブックマーク - NSInvocation の使い方と注意点 - iPhone will be interactive! NSInvocation の使い方と注意点 - iPhone will be interactive! のブックマークコメント

- (void)log:(NSString*)value {
    NSLog("%@", value);
}

この log メソッドを NSInvocation で呼ぶ場合。こんな感じで NSMethodSignature を引っ張って来て、target と selector と引数をセット。

NSString* param = @"test";
NSMethodSignature* sig = [self methodSignatureForSelector:@selector(log:)];
NSInvocation* inv = [NSInvocation invocationWithMethodSignature:sig];
[inv setTarget:self];
[inv setSelector:@selector(log:)];
[inv setArgument:&param atIndex:2];

引数をセットするとき、1. & をつけて、ポインタポインタを渡すこと, 2. 0番目と1番目は予約済み (暗黙に使われる) ので、2番目からセットすることに気をつける。

できたら、その場で呼び出したり、NSTimer で遅延呼び出しが出来る。

[inv invokeWithTarget:self]; // その場で呼び出し

[NSTimer scheduledTimerWithTimeInterval:1.0 invocation:inv repeats:NO]; // 1 秒後に呼び出し

2008-11-19

UIImage のリサイズ 19:13 UIImage のリサイズ - iPhone will be interactive! を含むブックマーク はてなブックマーク - UIImage のリサイズ - iPhone will be interactive! UIImage のリサイズ - iPhone will be interactive! のブックマークコメント

たぶんこの方法が一番スマート。

// image を newSize にリサイズする
UIImage* image = ...
CGSize newSize = ...
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// newImage がリサイズ後のイメージ

関数 (クラスのメンバではない) 経由で取得したオブジェクトのメモリ管理 19:09 関数 (クラスのメンバではない) 経由で取得したオブジェクトのメモリ管理 - iPhone will be interactive! を含むブックマーク はてなブックマーク - 関数 (クラスのメンバではない) 経由で取得したオブジェクトのメモリ管理 - iPhone will be interactive! 関数 (クラスのメンバではない) 経由で取得したオブジェクトのメモリ管理 - iPhone will be interactive! のブックマークコメント

関数名に「Create」や「Copy」がついているもの以外は、autorelease がついているものとして考えて良い (いんだよね?)。自分で release を呼び出す必要は無い (=自分はそのオブジェクトに対して責任がない)。

|