【问题标题】:IOS Objective C save image that is displayed in UIWebview by press and hold like in SafariIOS Objective C 保存图像,通过按住在 Safari 中显示在 UIWebview 中
【发布时间】:2017-05-18 15:37:49
【问题描述】:

我是IOS的初学者。我正在编写一个在 UIWebview 中显示网站的应用程序。现在我希望当用户按住图像时,他可以像在 safari 中一样保存图像。我的代码现在看起来像这样,但应用程序甚至无法识别按住手势:

    -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
else if([request.URL.absoluteString containsString:@".png"]||[request.URL.absoluteString containsString:@".jpg"]){
            self.lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressGestures:)];

            self.lpgr.minimumPressDuration = 1.0f;
            self.lpgr.allowableMovement = 100.0f;
            self.lpgr.delegate = self;

            [self.webVIew addGestureRecognizer:self.lpgr];


        return false;
    }

    return TRUE;
}

- (void)handleLongPressGestures:(UILongPressGestureRecognizer *)sender
{
    NSLog(@"go within LongPressgesture methode");
    if ([sender isEqual:self.lpgr]) {
       if (sender.state == UIGestureRecognizerStateBegan)
       {
           NSLog(@"go within LongPressgesture methode2");

            UIMenuItem* myBtn1 = [[UIMenuItem alloc] initWithTitle: @"Speichern" action:@selector( onButton1: )];

            UIMenuController* mc = [UIMenuController sharedMenuController];
            mc.menuItems = [NSArray arrayWithObjects: myBtn1, nil];

                }


    }
    }
- (void) onButton1: (UIMenuController*) sender
{
    UIGraphicsBeginImageContext(self.webVIew.frame.size);
    [self.webVIew.layer renderInContext: UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil);

}
 and in the header file:
@interface WebViewController : UIViewController<UIWebViewDelegate, UIGestureRecognizerDelegate>{
    IBOutlet UIButton *btnHome;

    BOOL isLoaded;
    ACAccountStore *account ;


}

我不知道我做错了什么。感谢您的每一个建议。

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    WebView 已经有一个手势识别器。因此需要实现UIGestureRecognizerDelegate 的方法- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer。否则,触摸只会发送到 Web 视图的手势识别器。

    因此将以下方法添加到您的代码中:

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
        return YES;
    }
    

    将此协议添加到您的标头中:UIGestureRecognizerDelegate

    并在创建手势识别器时添加以下行:

    self.lpgr.delegate = self;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-18
      • 2014-09-30
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多