iOS6の最近のブログ記事

cocos2dとcocoaインタフェースのハイブリッドを実装する際、つい便利なaddChildViewControllerを使ってしまいがちですが、使うとアプリがバックグラウンドに移行するタイミングで終了してしまいます。

昔の方法になりますが、addChildViewController:を使わずにメンバ変数にviewControllerを保持しておき、rootViewController.viewに対してaddSubView:を実行するようにします。
本日RelationalVoiceRecorderが4.0にバージョンアップしました!
iPhone5の縦長画面対応、iOS6対応、安定性が向上しております。
さらに新機能としてEvernoteとの連携機能を追加しました。

Evernote連携機能の使い方は非常に簡単です。

送信したいファイルのメニューの2ページ目を表示して
2012-10-05 14.02.33.png
Evernoteボタンをタップします。
2012-10-05 14.02.37.png
たったこれだけで完了です。
録音データ、録音地点、メモ情報が1つのメモとしてEvernoteにアップロードされます。
勿論Dropboxのアップロード機能と同じく、Everoteへのアップロードはバックグラウンドで行なわれます。
Evernoteへのアップロード中でも新しく録音を開始したり、メモの編集が可能です。

Evernoteへのアップロード状況は、専用の画面で確認が可能です。
2012-10-05 14.02.55.png
さらに便利になったRelationalVoiceRecorderを是非お試し下さい!

RelationalVoiceRecorder App
カテゴリ: 仕事効率化
価格: ¥350


無料版もございます。まずはこちらをお試し下さい。
無料版は下記の公式サイトから入手できます。

公式サイト
http://ict-fractal.com/ICTF0008/index.html
こんにちは。開発担当のICTFです。

  • UITextAlignmentCenter
  • UITextAlignmentRight
  • UITextAlignmentLeft
がiOS6で廃止予定になりました。
上記3つの定数を使っている箇所でワーニングが発生するようになっています。
ワーニングを解除するには、それぞれ下記の定数に置き換えて下さい。
  • NSTextAlignmentCenter
  • NSTextAlignmentRight
  • NSTextAlignmentLeft
こんにちは。開発担当のICTFです。

iOS6になって、以前画面回転の制御に使っていたshouldAutorotateToInterfaceOrientationはコールされなくなりました。
新たに導入された仕組みを使って画面回転制御を行なう必要がありますが、その方法については既に様々なサイトで紹介されていますので、「紹介通りに実装したのに上手く回転しない!」場合にチェックすべき項目について書こうと思います。

チェックポイント1:
AppDelegateのself.windowにビューをaddSubViewしていませんか?
古いバージョンから存在するプロジェクトをiOS6対応する場合、このような作りになっている可能性があります。

[self.window addSubview:rootViewController.view];

一見画面は正常に表示されますが、この方法では画面回転制御の新しい仕組みが働きません。
もし上記の書き方をしている場合、次のように書き替えて下さい。

self.window.rootViewController = rootViewController;


チェックポイント2:
Info.plistで設定するSupported Interface Orientationsの設定は合っていますか?
以前はあって無いようなものだったこの設定値がiOS6から生きてきます。
ここでデバイスの向きを有効化していないと、いくらコードを弄っても画面は回転してくれませんので注意が必要です。
Info.plistのSupported Interface Orientationsは、プロジェクトマネージャ内でプロジェクトを選択し、Summaryタブを選択する事GUIでの入力が可能です。
スクリーンショット 2012-09-29 2.44.21.png
上の画像では横方向2種類が選択状態になっています。

チェックポイント3:
AppDelegateのself.window.rootViewControllerにUINavigationControllerを設定していませんか?
もちろんナビゲーションベースのアプリを作る場合にrootViewControllerにUINavigationControllerを設定する事は間違いではありません。
しかしiOS6の仕様として、「UINavigationControllerに追加された子UIViewControllerには画面回転制御のコールバックがされない」というものがあります。
つまり、いくらUIViewControllerに画面回転制御を実装してもコールバックされない為思ったように回転制御が出来ない訳です。
UINavigationControllerのサブクラスを作り、そこに画面回転制御を組み込んでも構いませんし、次のようにUINavigationControllerクラス自体を拡張しても良いかもしれません。

@implementation UINavigationController (Rotation)


- (NSUInteger)supportedInterfaceOrientations{

    return [self.viewControllers.lastObject supportedInterfaceOrientations];

}


- (BOOL)shouldAutorotate{

    return [self.viewControllers.lastObject shouldAutorotate];

}


- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{

    return [self.viewControllers.lastObject preferredInterfaceOrientationForPresentation];

}


@end


上の例では、回転制御を現在表示中の子画面に渡しています。

こうする事で画面ごとに回転制御を行なう事が可能です。

アプリ内で回転制御を細かく分ける必要がない場合、UINavigationControllerから直接値を返すようにした方が楽かもしれません。