UILongPressGestureRecognizer добавлен в мое изображениеView с действием handleLongPressOnPhotos. Наиболее связанные коды выглядит следующим образом:Невозможно отклонить лист действий здесь
- (IBAction)handleLongPressOnPhotos:(UILongPressGestureRecognizer *)sender
{
self.imageWillBeSaved = (UIImageView *)sender.view; //breakPoint1
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]; //breakPoint2
NSLog(@"actionSheet addr when created is %p", actionSheet);//breakPoint3
[actionSheet release];//breakPoint4
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (buttonIndex) {
case 0:
UIImageWriteToSavedPhotosAlbum(self.imageWillBeSaved.image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil);
//[actionSheet dismissWithClickedButtonIndex:0 animated:YES]; i have tried to use this method here, but it didn't work.
break;
default:
break;
}
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
if (error != NULL)
{
// handle error
}
else
{
// handle ok status
}
}
Действие листа не будет уволен после того, как я нажмите «сохранить фото» кнопку. Если я снова нажму кнопку, лист действия отклонится, и фотография будет сохранена дважды. Любая проблема в коде? Заранее спасибо!
Ps. imageView является подвидью scrollView, а scrollView находится в таблицеViewCell.
- (IBAction)handleLongPressOnPhotos:(UILongPressGestureRecognizer *)sender
{
self.imageWillBeSaved = (UIImageView *)sender.view; //breakPoint1
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]; //breakPoint2
NSLog(@"actionSheet addr when created is %p", actionSheet);//breakPoint3
[actionSheet release];//breakPoint4
}
Я установил две точки останова в "handleLongPressOnPhotos:" метод как breakPoint1 и breakPoint1. Я выполнил шаги кода после того, как imageView был longPressed. Порядок шагов: breakPoint1 -> breakPoint2 -> breakPoint1 -> breakPoint2 -> breakPoint3 -> breakPoint4 -> breakPoint3 -> breakPoint4, затем вышел. Очевидно, что ActionSheet был представлен дважды, что вызывает проблему. Это странно, и я не знаю причины и избегаю этого.
Проблема решена в другом вопросеUILongPressGestureRecognizer gets called twice when pressing down
благодаря @Laddu, @MichaelDautermann, @sreecharan
вы добавили "' '" в .h интерфейса файла независимо от контроллера вида (или где-либо), из которого вызывается этот код? Что происходит, когда вы устанавливаете точку останова на строке '' switch (buttonIndex) '? Он попадает каждый раз или в другое время? –
Да, я добавлю "в файл интерфейса .h. Он ударяется каждый раз. –
точка останова ударяет каждый раз, когда вы нажимаете кнопку« сохранить фотографию » –