2

私は Titanium SDK 3.1.2 を使用しており、iOS と Android にデプロイしています。私のオーバーレイのコードはHEREにあります。コードが大きく、質問を明確かつ明確にしたかったため、これを行いました。次の機能を備えたカメラ用の独自のオーバーレイを作成しようとしています: 写真を撮ります。ビデオカメラを表示します。ギャラリーを開く。カメラを閉じます。カメラを閉じて写真を撮ることはできますが、フォト ギャラリーを開くことができません。私の galleryButton には、次のようなシングルタップ イベントがあります。

galleryButton.addEventListener("singletap", function(e){
        openKineduPhotoGallery();
        Ti.Media.hideCamera();
    });

しかし、これを行っても何も起こらず、その後はカメラを閉じたり写真を撮ったりすることができません。写真を撮ろうとすると、次のエラーが表示されます。

Script Error {
        backtrace = "#0 () at file://localhost/var/mobile/Applications/79D9256C-7782-4323-A371-1AD45B37D037/Full.app/ui/common/GenericWindow.js:1\n#1 () at file://localhost/var/mobile/Applications/79D9256C-7782-4323-A371-1AD45B37D037/Full.app/ui/common/CreateMoment.js:1";
        line = 1;
        message = "'null' is not an object (evaluating 'o.type')";
        name = TypeError;
        sourceId = 81147840;
        sourceURL = "file://localhost/var/mobile/Applications/79D9256C-7782-4323-A371-1AD45B37D037/Full.app/ui/common/GenericWindow.js";
    }

これが表示されるために、どのオブジェクトがnullになっているのかわかりません。メソッドを呼び出す順序を入れ替えて、次のようにしました。

galleryButton.addEventListener("singletap", function(e){
        Ti.Media.hideCamera();
        openKineduPhotoGallery();
    });

しかし、それはカメラを非表示にするだけで、ギャラリーをまったく表示しません。さらに、iOS で次の警告が表示されます。

Nov  6 18:37:20 Nenvo-iPod Full[3240] <Warning>: *** Assertion failure in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:], /SourceCache/UIKit/UIKit-2380.17/UIWindowController.m:211
Nov  6 18:37:20 Nenvo-iPod Full[3240] <Warning>: Warning: Attempt to dismiss from view controller <UIImagePickerController: 0x1e5e17a0> while a presentation or dismiss is in progress!

hideCamera メソッドの障害だと思ったのでコメントしましたが、それは showCamera メソッドでエラー関数をトリガーするだけで、次のような JSON エラー オブジェクトを取得します。

{
  "type": "error",
  "code": 1,
  "source": [object MediaModule],
  "success": false
}

MediaModule を文字列化しようとしましたが、空のオブジェクトが返されました。カメラ オーバーレイからギャラリーを開くことはできますか? 私のオプションは何ですか?Instagram が写真を撮り、ビデオを録画し、ギャラリーから写真を選択する方法と同様のワークフローを実現しようとしています。

4

1 に答える 1

0

以下の問題に答えるには、実際には hideCamera を呼び出して PhotoGallery を開くと、両方がモーダル ウィンドウとして開かれるため、数秒後に openKineduPhotoGallery 関数を呼び出す必要があります。

galleryButton.addEventListener("singletap", function(e){
        Ti.Media.hideCamera();
        openKineduPhotoGallery();
});

したがって、以下のコードを試してください。

   galleryButton.addEventListener("singletap", function(e){
            Ti.Media.hideCamera();
            setTimeout(function(){
                    openKineduPhotoGallery();                   
            },500);
    });
于 2014-04-01T13:53:43.450 に答える