如何在WKWebView上添加一个可以沿着这个webView平移的子视图?

时间:2017-01-25 03:13:31

标签: ios objective-c view wkwebview

我想使用此内容(https://www.windytv.com/?-34.816,138.608,5)向此WKWebView添加一个子视图。这样subView就可以和webview一起进行平移(想象一下,有一个标志性的视图正在平移),但我可以做到。

我尝试了很多方法如下:

  1. 我将webView添加到webView的不同子视图中,失败了。
  2. 1.1例如:

    [self.webView addSubView:landmarkView];
    

    1.2或:

    [self.webView.scroolView addSubView:landmarkView];
    

    1.3或:

    [self.webView.scroolView.subViews.firstObject addSubView:landmarkView]; // In viewDidAppear
    

    这里有趣的是WKWebsite的视图层次将在viewDidAppear中更改。它获得了更多的子视图,如“WKContentView”。

    1. 接下来是1.,我尝试添加一个gestureView来传递手势以移动landmarkView,失败。手势的动作没有开始。
    2. 1.1。例如,我添加了webView的超级视图。

      [self.view addSubView: baseView];
      [self.baseView addSubView: webView];
      self.panGestureRecognizer.cancelsTouchesInView = NO;
      [webView addGestureRecognizer: self.panGestureRecognizer];
      
      1. 或者,我添加了webView的子视图。

        [self.view addSubView:webView]; [self.webView addSubView:gestureView]; gestureView.backgroundColor = [UIColor clearColor]; self.panGestureRecognizer.cancelsTouchesInView = NO; [gestureView addGestureRecognizer:self.panGestureRecognizer];

      2. 有谁熟悉WKWebView?

        除了UIGesture之外,还有其他方法可以将触摸分配给许多视图吗? 如果我可以覆盖其中一个子视图中的touchesBegan方法,那应该会容易得多。我认为hitTest仍然仅适用于视图。

        一般

        - (void)viewDidLoad
        {
            UIView *landmarkView = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 200, 200)];
            landmarkView.backgroundColor = [UIColor redColor];
        
            NSString *path = @"https://www.windytv.com/?-37.331,145.102,7";
            NSURL *url = [NSURL URLWithString:path];
            NSURLRequest *request = [NSURLRequest requestWithURL:url];
            [self.webView loadRequest:request];
            [self.view addSubView: self.webView];
        
            [self.webView.scrool addSubView:landmarkView]; // This is one of the failed attempts.
        }
        

1 个答案:

答案 0 :(得分:1)

可以通过使用此委托方法添加panGesture来解决此问题 这里介绍了诀窍:
UIPanGestureRecognizer on MKMapView?