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; 

인수 같아야 트리거 화재는 인식기가 아닌 이미지이다. 인식기가 하나의보기에만 연결되어있는 경우 view 속성을 통해 인식기를 가져옵니다. 그렇지 않으면 긴 탭과 히트 테스트의 위치를 ​​가져 와서 뷰를 가져올 수 있습니다.

+0

당신은 맞을 것입니다, 당신의 대답에 감사드립니다! –

+0

지금 이미지를 저장할 수 있지만 "사진 저장"버튼을 클릭 한 후 작업 시트가 닫히지 않는 이유는 무엇입니까? 버튼을 다시 클릭하면 작업 시트가 닫히고 사진이 두 번 저장됩니다. –

+0

이미지 저장에 1 초가 걸릴 수 있습니다. 기다리면 콜백 받으실 건가요? 어쩌면 actionSheet : clickedButtonAtIndex :)에서 바로 actionSheet를 닫고 콜백을 기다려야합니다. 오류가있는 경우 사용자가 제시하고 그렇지 않으면 사용자가 모든 것이 정상적으로 진행되었다고 가정합니다. –

2

UILongPressGestureRecognizer

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

UILongPressGestureRecognizer에 대한 선택기입니다, 당신의 코드에서 문제는, 당신이 UILongPressGestureRecognizer의 선택기에서 인수로 UIImageView를 전달하는 것은 바로 이것과 저것을 편집한다는 것입니다입니다 ..

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

상단 두 줄을 바꿉니다.

- (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 –