1

私は再び苦労しています。今回は正しいエラー情報を表示するためのアラート ビューを取得します。2 本の指でたとえば Google 画像 (フルサイズ) の画像をクリックすると、画像が保存され、表示されます。正しいアラート「画像が保存されました」ですが、2 本の指でどこでもクリックでき、保存する画像がなかったのでクリックしていなくても「画像が保存されました」と表示されます。したがって、誰かが画像以外でジェスチャを行うときにメッセージを表示するのを手伝ってくれるなら、ここに完全なコードがあります *tagname 変数も使用されていないため、問題は別の場所にある可能性があります 事前に感謝します

    - (void)webViewDidFinishLoad:(UIWebView *)webView
{
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

//DoubleTap Gesture
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
doubleTap.numberOfTouchesRequired = 2;
[self.myWebView addGestureRecognizer:doubleTap];


}
//Double Tap Method
-(void) doubleTap :(UITapGestureRecognizer*) sender {
int scrollPositionY = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"window.pageYOffset"] intValue];
int scrollPositionX = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"window.pageXOffset"] intValue];

int displayWidth = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"window.outerWidth"] intValue];
CGFloat scale = myWebView.frame.size.width / displayWidth;

CGPoint pt = [sender locationInView:self.myWebView];
pt.x *= scale;
pt.y *= scale;
pt.x += scrollPositionX;
pt.y += scrollPositionY;

NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).tagName", pt.x, pt.y];
NSString * tagName = [self.myWebView stringByEvaluatingJavaScriptFromString:js];

NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", startPoint.x, startPoint.y];
NSString *urlToSave = [self.myWebView stringByEvaluatingJavaScriptFromString:imgURL];


NSURL *url = [NSURL URLWithString:urlToSave];

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
UIImageWriteToSavedPhotosAlbum(image,self,@selector(savedPhotoImage:didFinishSavingWithError:contextInfo:),nil);
}
//Alert for double tap save photo
- (void)   savedPhotoImage:(UIImage *)image
  didFinishSavingWithError:(NSError *)error
           contextInfo:(void *)contextInfo
{
UIAlertView *alert;

// Unable to save the image
if (error)
    alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                       message:@"Unable to save image to Photo Album."
                                      delegate:self cancelButtonTitle:@"Ok"
                             otherButtonTitles:nil];
else // All is well
    alert = [[UIAlertView alloc] initWithTitle:@"Success"
                                       message:@"Image saved to Photo Album."
                                      delegate:self cancelButtonTitle:@"Ok"
                             otherButtonTitles:nil];
[alert show];
}    
4

1 に答える 1

-2
if (error)
alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                   message:@"Unable to save image to Photo Album."
                                  delegate:self cancelButtonTitle:@"Ok"
                         otherButtonTitles:nil];
else // All is well.
   //Without a curly brace here, only one line will get executed. If you want [alert show] to get executed, you have to put a curly brace above and right after wards
  {
    alert = [[UIAlertView alloc] initWithTitle:@"Success"
                                   message:@"Image saved to Photo Album."
                                  delegate:self cancelButtonTitle:@"Ok"
                         otherButtonTitles:nil];
    [alert show];
 }
}  
于 2012-12-08T21:25:37.587 に答える