3

UILongPressGestureRecognizerが、handleLongPressOnPhotosというアクションでimageViewに追加されました。 - [UILongPressGestureRecognizer画像は]:UIImageWriteToSavedPhotosAlbumを使用して画像を保存すると、認識できないセレクタエラー

アクションシートの「写真を保存」ボタンをクリックする
- (IBAction)handleLongPressOnPhotos:(UIImageView *)sender{ 
self.imageWillBeSaved = sender; 
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Save the photo" otherButtonTitles: @"Go to the Original photo", nil]; 
actionSheet.actionSheetStyle = UIActionSheetStyleDefault; 
[actionSheet showInView:self.view]; 
[actionSheet release]; 
} 

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ 
switch (buttonIndex) { 
    case 0: 
     UIImageWriteToSavedPhotosAlbum(self.imageWillBeSaved.image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil); 

     break; 

    default: 
     break; 
} 

} 

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo 
{ 
if (error != NULL) 
{ 
    // handle error 
} 
else 
{ 
    // handle ok status 
} 
} 

、エラーメッセージがとおり最も関連するコードは以下の通りである未認識セレクタインスタンスに送信0x21c2a0 コード内に問題はありますか?前もって感謝します!

+0

ここであなたはUILongPressGestureRecognizerを追加しましたか?そのコードも追加してください。 – rishi

+0

OK、次の回答を確認してください。 –

+0

plzで問題が解決しました。 –

答えて

2

あなたの送信者は明らかにUILongPressGestureRecognizerです。

メソッドの引数は、認識、ないイメージ図である

- (void)nameOfMethodHere:(UIGestureRecognizer *)gestureRecognizer; 

次のようにジェスチャー認識がトリガされた火が見えるはずです。レコグナイザが1つのビューにのみ添付されている場合は、 viewプロパティを使用して取得します。それ以外の場合は、長いタップとヒットテストの位置を取得してビューを取得することができます。

+0

あなたは正しいことが必要です、あなたの答えをありがとう! –

+0

イメージを保存できますが、「写真を保存」ボタンをクリックしてもアクションシートが却下されないのはなぜですか?もう一度ボタンをクリックすると、アクションシートは消え、写真は2回保存されます。 –

+0

イメージを保存するのに1秒かかる場合があります。あなたが待っているとコールバックを手に入れますか? actionSheet:clickedButtonAtIndex :)ですぐにactionSheetを終了し、コールバックを待つ必要があります。エラーがあった場合はそれを提示し、そうでない場合は、すべてがOKになったものとみなします。 –

2

これはこれはUILongPressGestureRecognizerためのセレクタで、あなたのコードに問題があなただけのこのとそれを編集UILongPressGestureRecognizerのセレクタに引数としてUIImageViewを渡している、ということであるUILongPressGestureRecognizer

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)]; 
longPress.minimumPressDuration = 1.0; 
[YOURVIEW addGestureRecognizer:longPress]; 
[longPress release];  

のため..です

- (void)handleLongPress:(UILongPressGestureRecognizer*)sender 
{ 
    if (sender.state == UIGestureRecognizerStateBegan) 
    { 
     //YOUR CODE 
    } 
} 
5

トップの2行を置き換えます。

- (IBAction)handleLongPressOnPhotos:(UIImageView *)sender{ 
self.imageWillBeSaved = sender; 
..

- (IBAction)handleLongPressOnPhotos:(UIGestureRecognizer *)sender{ 
self.imageWillBeSaved = sender.view; 

、これは動作するはずです...これは非常によくデイヴィッドによって説明されて起こっている理由。

+0

はい、それは動作しますが、私は別の問題http://を実行しますstackoverflow.com/questions/10511047/can-not-dismiss-an-action-sheet-here –

関連する問題