iPhoneSDKれじ☆すた

正直どこまで売れるのかよくわからないアプリではあるが、ともかく世に問うてみようと思ったアプリの1つではあるので自己満足。

これの原型版はン年前のコミケだか例大祭1週間くらい前で「CoreDataの使い方の勉強がてら(下手すると所謂Master-Detailのアプリも初)の作ってみよう」ということで作ったアプリで、味も素っ気もなかったのがそこそこ凝った画像デザインになって、それをしばらく放置してたのを1から作り直したアプリ。

そういう理由でアプリ名が(当時の世相を反映している)「れじ☆すた」ということなのです(え?)

まぁ茶化してる部分もありますが、基本「自分がまともにレジ打ちに使える」ことは念頭に置いていますし、わりとしっかり想定した動作チェックをしてるはずなので(過去そういっておいて致命的な不具合出すことが多数あったので自分に信頼がおけませんが…)、サークル参加される方々でご興味ご関心ございましたら是非是非。
唯一、出力したデータの様式については(今回足した機能でもあるので)いろいろデータの表現は使い勝手でクレームが来るんじゃないかと思うけど、そこは随時要望対応でどうにかなる(データ打ち込みさえ消えなければ出力しなおせるしどうにでもなるはず)とあたい信じてる。

#正直どこまでどう対応していいのかわからないので「集計データだけをベタに出すように」意識して作ってはあるんだけどどうなんだろう

ちなみにお手元に旧型の3GSとかありましたら一旦初期化しつつ、れじ☆すただけを入れてペアレンタルコントロールでアプリを制限するなどすると、iPhoneが正真正銘の嘘レジ端末として使えるということになるのでご検討を(何)

iPhoneSDKiOS6で動くのにiOS5で動かないテンプレート

覚え書き。
【症状】
 iOS5で横向きで起動しても回転してくれない、縦向き(Portrait)、しかも上下逆も対応してくれない
 iOS6ではきちんと回転、横向き起動に対応する
【対応】
最新のXCodeのテンプレートから
– (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
が抜けてやがったので、こいつを実装すると回転する。

iPhoneSDK最速の「新しかったiPad」、最後のiPad

iPad2併売の時点で、おそらく「同じ解像度のminiを同じ値段でやってくるか?」と踏んだんですが。Engadget曰く「引き続き併売される iPad 2 とは6000円差」ということは一応上位っつーことですか。まぁこれでiPad2ならずとも非Retina解像度のアイコンを用意し続ける必要は生じたか…ちっ(ぉぃ
そしてしかしまさかこの時点でLightningとA6のため「だけ」(他にも無線とか対応キャリアとか前面カメラとか差があるけど)にiPad4持ってくるとは…そして「Retinaモデル」って「新しいiPad」さんDisってるのかぉぃ。来年だと思ってたのに。
でも一方で、Appleさんの強調する利点をさして利点と感じない身としては、コストの安いDockケーブルの使え、かつCPU/GPUも現状で満足できる(というか、そんなに最適化してアプリつくれるわけでも、そんなCPU/GPUを酷使したアプリを使うでもない)僕としては、現状のiPadでいいんだい!と虚勢を張っておくべきかな。うん。
===
Mac miniはそろそろ切り替えてもいいかなぁと思う季節ですね。20万くらい用意したい。だれかください(待
#今回の発表の自分に取って極めて重大重要な点は、勤労意欲に直結する点ですね…うん。

iPhoneSDKAppSalesと和解せよ

やっぱりAppSalesのPaymentデータの取得でエラーが発生する…
英語でなら多少罵られても分からないので(笑)、トピック立項という手段を持って
「iOSデバイスの設定が日本語の時にだけデータ取得がエラー起こすっつってんだよこのボケ!」
という趣旨のことを再度Gitに言ってみるテスト。
この件のAppSalesのソースの修正点は1カ所で、ReportDownloadOperation.mの
NSString *signoutSentinel = @”Sign Out”;

NSString *signoutSentinel = @”サインアウト”;
にすればOK(本来はNSLocalizedString(@”signoutSentinel”, @”Sign out sentinel”)とかすべきだが…)。

iPhoneSDK続・iOS6め…

【結局どう直したか】
didRotateFromInterfaceOrientationで回していたレイアウト用のメソッドをviewWillLayoutSubviewsでも実行した
iOS5までは、didRotateFromInterfaceOrientationが起動時にも動いてくれてたのでよかったんですが、iOS6だと「横向きに起動したとき」に動いてくれないんですね。
なので、didRotateFromInterfaceOrientationではなく、viewWillLayoutSubviewsでコードを実行する必要がある、と。
ところがviewWillLayoutSubviewsはiOS5以降の機能なので、必然的にiOS4.x系統は死にます。
もっともそれ以外のいろんな点でiOS4系のサポートはやりたくないので寧ろこういう理由がついて嬉しい限りですが!
#iOS5以降でないとUIStepperとかの一部コンポーネントは動かないし…

iPhoneSDKiOS6め…

「iOS6」「iPad」「横向き状態で起動」という3要件を満たすと起動時の画面構成がおかしくなる、という珍現象を発見してログを仕込んで挙動を見る。
なんで挙動(ログを仕込んだ場所を通る回数とデバッグコンソールに出力する値)が全然違うんだよ!
ちなみに上記の条件以外では正常動作するので直すのが非常に面倒(単純に弄ると大丈夫な部分まで影響を与えそう)そうというのが何とも。
どうしてこうなった…

iPhoneSDKメソッドを動的に指定する

hogehogeというNSStringで指定した名前のメソッドへのセレクタは
NSSelectorFromString(hogehoge)
というのは分かったのだが、このセレクタに引数が欲しいときにどうすればいいのか分からなかった。
メソッド名が固定なら@selector(hogehoge:)でいいんだけどなぁ…と思いつつ検索を深めていくと、意外な事実
メソッド名の末尾にコロンつければいい
つまり@”hogehoge:”というNSStringを指定すればいい、ということらしい。

iPhoneSDK所謂UIPickerViewについての記事

手抜きと言われようが何だろうが情報が散逸して重複しても情報量ないしなぁと思うのでこの記事見れば使えるようになるんじゃないかとご紹介。
IB使わないなら、IBOutletとIBで定義してる部分を代行すればいいので、alloc、init(initWithFrameではないのに注意)かまして、delegateとdatasourceを設定すればあとは一緒。
UIView派生クラスなので、普通にaddSubViewで張り付ければOK。表示座標が設定したければinit後にframeを取ってきてorigin.xとorigin.yを変えて再設定すればいい。
UIPickerViewを複数使うなら(今月のゴメンナサイでも触れたけど)tagを設定してswitch~case分岐で対応するとかがいいのではないかと。

iPhoneSDK複数のUIGestureRecognizerを登録して競合させない

#日記に潤いを与えるためにここに記載
#そのうち隔離とかする予定…またBlog増えるのかw
情報元
複数のUIGestureReconizerに対応するためには、デリゲートメソッド
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
を作ってやって、こいつでYESを返せばいい。
これは「gestureRecognizeで指定されたジェスチャ」が「shouldRecognizeSimultaneouslyWithGestureRecognizer」と同時にジェスチャを認識していいか、というお話。
「Tapしてドラッグする」ジェスチャで、タップ開始点が必要なときにこいつを使おうかと。