1

「使用しない」:ユーザーが最近撮影した写真を確認した後、それはもはや活動や進捗状況インジケータを提供します。一言で言えば、あなたは今 - 、 を写真を撮る - それは大丈夫だと 決定 - 「使用」ボタンを押して待ちます。 実際に「使用」ボタンを押したかどうかの表示はありません。しばしば、私は実際にそれを打つかどうかわからないので、私はそれを数回打つ。数秒後に画像が表示されるか、画像がデリゲート接続を介して利用できるようになります。iPhone UIImagePickerControllerの問題:AppleはUIImagePickerControllerはslighty変更iPhone OSのバージョン3.0を導入するとヒットした後UIActivityIndi​​catorViewを表示したいボタン

  • (無効)imagePickerController:(UIImagePickerController *)ピッカー didFinishPickingMediaWithInfo:(NSDictionaryの*)情報

私の質問はこれです: - どのように私は右の "使用" ボタン後UIActivityIndi​​catorViewを表示します選択されていますか?または、「使用」ボタンのコールバックを傍受して自分のコードを挿入する方法は?私はウェブを検索し、多くの人が同じ問題を抱えていることを期待していますが、解決策はまだ見つかりませんでした。

ありがとうございました。

答えて

1

残念ながら、あなたは、この呼び出しをインターセプト傾けます。これは、UIImagePickerControllerにデリゲートにUseボタンのプッシュについて伝えるデリゲートメソッドがないためです。 UIImagePickerControllerのコードを変更できないので、何かできることはないと思います。アップルは3.1でこれを改善するかもしれませんが、私はUIImagePickerControllerに関するいくつかの作業を行ったと聞いています...

+0

私はあなたがまだできない3.1のapiファイルを見ることで見ることができましたが、それはすべて変更することができます水曜日 –

0

あなたが本質的にできることは、UIImagePickerビューを閉じる前にUIIctivityInidicatiorを追加することです。ここで

は、ユーザーが使用ボタンを押した後、私は画像を圧縮していながら、私がやっている同様のことです。 didFinishPickingImage上:

//this will add the UIActivityInidicatior to the picker view 

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo { 
showActivity(@"Compressing Image", picker.view); 

//this is a hack so the progress label will show up 

[NSTimer scheduledTimerWithTimeInterval: 0.0f 
            target: self 
            selector: @selector(compress:) 
            userInfo: image 
            repeats: NO]; 
} 




//the Compress method 

(void) compress:(NSTimer *)inTimer { 
NSAutoreleasePool *_pool = [[NSAutoreleasePool alloc] init]; 

//do some work 


    [[self getPicker] dismissModalViewControllerAnimated:YES]; 

//dismiss the view we added to the picker 
showActivity(nil, [self getPicker].view); 

[_pool release]; 

} 

注私は外UIImagePickerControllerを保つので、私は呼び出されたメッセージから、それを参照することができ、それは実際にあなたが追加しているUIを表示するためにiphoneを起こす気の利いたトリックです - NSTimerに注意してください。

showActivityは、特定のビューにいくつかのUIを追加する簡単な方法です。ディスパッチキューの概念を通じて

+0

完全なコードを投稿できますか?私もそのようなもののためにlokingしている –

0

、あなたが使用ボタンを押したときに

それは1つのスレッドでpickercontrollerを解任し、活動の指標コードを示すことは別のスレッドで実行されます。その間に、独自のメソッドを呼び出すことができます。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT、 0)、^ {

dispatch_async(dispatch_get_main_queue(), ^{ 

    indicator=[[MBProgressHUD alloc]init]; 
    [email protected]"Loading"; 
    indicator = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES]; 
    [indicator show:YES]; 


}); 

// Put here the code to resize the image 
[self performSelectorInBackground:@selector(setPath:) withObject:image]; 

dispatch_async(dispatch_get_main_queue(), ^{ 
    [picker dismissModalViewControllerAnimated:YES]; 

}); 

OR

あなたはこの行を変更することを意味uiimagepickercontrollerでの活動の指標を表示する場合

indicator=[[MBProgressHUD alloc]init]; 
    [email protected]"Loading"; 
    indicator = [MBProgressHUD showHUDAddedTo:picker.cameraOverlayView animated:YES]; 
    [indicator show:YES]; 
関連する問題