カテゴリー別アーカイブ: 未分類

iOS5.1 + XCode4.3.1 + Unity3.5 で実機テスト不可?【3月12,16日追記】回避策あり

実機では動かない。
詳しくは調べてないけど現象としては動かない。

★3月16日追記

回避策としてXcodeをDownGradeして4.3にすると実機確認できるようになります。

https://developer.apple.com/downloads/index.action

また、4.3だとiPadがiOS5.1βまでしか対応しておらず、必然的に非プロUnityはiPad版をビルドする事ができなくなります。

なのでiOSをおいそれとアップグレードするとチェックできなくなるどころかりいrースできなくなるので注意です。

とはいえ、今日は新iPadの発売日。Unity非Proユーザが初iOS向けアプリとして新デバイスを用いようと購入した場合は残念な結果が待ってますね。

★3月12日追記

現状でも相変わらず原因特定には至って居らず、iOSデバイス実機上での確認は出来ていない。

コンパイル後の動作で出ているメッセージはSplashScreenを消す権限は無いよ、との事。

しかし件の部分は差し替えを行っておらず、デフォルトのまま。

■仮説1:3.4以前のUnityProjectデータをUnity3.5がコンバートした際に壊れたのでは?

検証:ならば3.5でゼロから作って試す。

試したのはgameObjectが回転するスクリプトを搭載したキューブを写すカメラがあるだけのシーン。

Unity3.5でビルド -> Xcode4.3.1でビルド- > 実機iOS5.1へ。

Xcodeでのビルド、転送ともに上手く行くものの起動直後(UnityのSplashScreenは出る)のタイミングで停止。

abort()がかかったような挙動。

停止時のメッセージは”You are using Unity iPhone Basic. You are not allowed to remove the Unity splash screen from your game”と。

■仮説1の結論

Unity3.5が行ったコンバートに問題があるわけではない、ということは分かった。

コンバートしてないUnity3.5自体が生成したプロジェクトもiOS5.1実機では動作不能。

■仮説2:iOS5.0ならどうなの?

iOSは5.1にアップグレードされたばかりだし様々な問題により実機で動作でいなくなってしまったのでは?

■仮説2の結論

iOS5.0でも全く同じ挙動でメッセージも同じ。

他にもXcodeをダウングレードさせる方法なども試したものの、iOS向けUnityPro使えばいけるよーという話しか見当たらず現在にいたる。

FBでも質問を立てさせて頂いたが同様の事例は1件だけで他の方々はProを使ってるからなのか起こらないみたい。

■仮説3SplashScreenが何かしらの理由により消滅したのでは?

■仮説3の結論

正常に起動するXcodeProjectファイルを解析してみないと何とも言えない…。

で、件のメッセージの2センテンス目をグーグル先生に聞いてみると似た様な現象がちらほら。

http://answers.unity3d.com/questions/26826/tracking-down-a-sigabrt-on-startup.html

ページ中央らへん。つい先日にも投稿が。

以下に似た様な事例が…。

http://answers.unity3d.com/questions/226257/35-free-version-so-not-work-on-my-iphone.html

こっちも同様。

”おれ、Splash Screen変えてないのに、でも同じメッセージでとまっちゃうんだよなぁ。”

”2ヶ月前にプロ版をお試し1ヶ月やってみた時のコードはちゃんと動くんだぜ”

と。

プロ版で出力する分には大丈夫なことはどうやら確定。

でもUnity3.5だったのか前のバージョンだったのかは分からない。

2ヶ月前は出てなかった。

3.5は2月15日にプレスリリースされている。

いずれにせよこの質問に対して回答が一つも無い。

よくみたら6時間前に投稿されたばかりだ。

http://answers.unity3d.com/questions/225504/ios-splash-screen-error.html

二つ目のリンク、回答というか解決がなされた訳ではないもののレスが一つ。

読んでみるとRetinaディスプレイ向けのSplashScreenがUnityからは吐出されない模様。

それが前述のメッセージの原因になってたので既にUnityにメールしたよーって書いてある。

なんと!

ということはUnity3.5ではXcode4.3のプロジェクト構成に対応しきれてなかったということか。

とはいえ、これも予測の域を出ず、Unityオフィシャル側からのメールの返答は未だ無い模様。

※このレス投稿者がメール着たらまた書き込むよ、と書いてるがまだ追加の投稿が無い。

とりあえずこれは放置するしかない問題だということか。

最後に発見。(FB助け合い所で質問したら指摘を頂いた)

http://forum.unity3d.com/threads/126905-Xcode-4.3.1-iOS-SDK-5.1-Known-Issues-(postpone-upgrade)

Xcode4.3.1では無理だよーって確定、オフィシャルが言ってた残念。

ちなみにこのリンクに記述されているBack IssueはDLできませんでした。

【objective-c】 setKeyboardType一覧


setKeyboardTypeで指定する定数がいっぱいあったので一覧化。
違いがわかったりわからなかったり。

iOSでテキスト入力箇所をアクティブにした際に呼ばれるキーボードの指定一覧

指定

サンプル
UIKeyboardAppearanceDefault

UIKeyboardTypeDefault1
UIKeyboardTypeDefault2

UIKeyboardTypeTwitter

UIKeyboardTypeTwitter1UIKeyboardTypeTwitter2

UIKeyboardTypeAlphabet

UIKeyboardTypeAlphabet

UIKeyboardTypeEmailAddress

UIKeyboardTypeEmailAddress1
UIKeyboardTypeEmailAddress2

UIKeyboardTypePhonePad

UIKeyboardTypePhonePad

UIKeyboardTypeNumberPad

UIKeyboardTypeNumberPad

UIKeyboardTypeURL

UIKeyboardTypeURL1UIKeyboardTypeURL2

UIKeyboardTypeNumbersAndPunctuation

UIKeyboardTypeNumbersAndPunctuation1UIKeyboardTypeNumbersAndPunctuation2

UIKeyboardTypeASCIICapable

UIKeyboardTypeASCIICapable

UIKeyboardTypeDefault

UIKeyboardTypeDefault1UIKeyboardTypeDefault2

おまけ

テキストエリア生成コードサンプル

objective-c:
-(UITextField*)makeTextField:(CGRect)rect text:(NSString*)text type:(NSInteger*)type{
    //テキストフィールドを生成し、rect,text,色,キーボードに関する情報をセットして返す。
    UITextField* textField = [[[UITextField alloc] init] autorelease];
    [textField setFrame:rect];
    [textField setBackgroundColor:[UIColor whiteColor]];
    [textField setBorderStyle:UITextBorderStyleRoundedRect];
    //以下がキーボード関連。キーボードのアピアランス、キーボードの種別、改行キーの種別
    [textField setKeyboardAppearance:UIKeyboardAppearanceDefault];
    switch((NSInteger)type){
        case 1:
            [textField setKeyboardType:UIKeyboardTypeDefault];
            [textField setText:@"UIKeyboardTypeDefault"];
            break;
        case 2:
            [textField setKeyboardType:UIKeyboardTypeASCIICapable];
            [textField setText:@"UIKeyboardTypeASCIICapable"];
            break;
        case 3:
            [textField setKeyboardType:UIKeyboardTypeNumbersAndPunctuation];
            [textField setText:@"UIKeyboardTypeNumbersAndPunctuation"];
            break;
        case 4:
            [textField setKeyboardType:UIKeyboardTypeURL];
            [textField setText:@"UIKeyboardTypeURL"];
            break;
        case 5:
            [textField setKeyboardType:UIKeyboardTypeNumberPad];
            [textField setText:@"UIKeyboardTypeNumberPad"];
            break;
        case 6:
            [textField setKeyboardType:UIKeyboardTypePhonePad];
            [textField setText:@"UIKeyboardTypePhonePad"];
            break;
        case 7:
            [textField setKeyboardType:UIKeyboardTypeEmailAddress];
            [textField setText:@"UIKeyboardTypeEmailAddress"];
            break;
        case 8:
            [textField setKeyboardType:UIKeyboardTypeAlphabet];
            [textField setText:@"UIKeyboardTypeAlphabet"];
            break;
        case 9:
            [textField setKeyboardType:UIKeyboardTypeTwitter];
            [textField setText:@"UIKeyboardTypeTwitter"];
            break;
        default:
            break;

    }
    [textField setReturnKeyType:UIReturnKeyDone];
    return textField;
}

iOSプログラミング逆引きリファレンス108 ~知りたいことがすぐわかるiPhoneプログラミングテクニック~

iPhoneプログラミングUIKit詳解リファレンス

iOSデバッグ&最適化技法 for iPad/iPhone
詳解 Objective-C 2.0 第3版