0

I want to add a subView to this WKWebView with this content (https://www.windytv.com/?-34.816,138.608,5). so that the subView can be panning along with the webview (imagine there's landmark view being panning along), but I could do it.

I tried many ways as follows:

  1. I add a landmarkView to different subViews of the webView, failed.

1.1 For example:

[self.webView addSubView:landmarkView];

1.2 Or:

[self.webView.scroolView addSubView:landmarkView];

1.3 Or:

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

The interesting thing here is the view hierachy of WKWebsite will change in viewDidAppear. It gets more subView like "WKContentView".

  1. Followed by 1., I try to add a gestureView to pass the gesture to move the landmarkView, failed. The action of the gesture did not procceed.

1.1. For example, I add on the super view of webView.

[self.view addSubView: baseView];
[self.baseView addSubView: webView];
self.panGestureRecognizer.cancelsTouchesInView = NO;
[webView addGestureRecognizer: self.panGestureRecognizer];
  1. Or, I add on the subView of webView.

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

Anyone familiar with WKWebView?

Except for UIGesture, Is there other ways to distribute a touch to many views? If I could override the touchesBegan method in one of the subViews, it should be much easier. And I think hitTest still work only on a view.

The general

- (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.
}
allenlinli
  • 2,066
  • 3
  • 27
  • 49

1 Answers1

1

It can be solved by adding a panGesture with this delegate method.
The trick is introduced here:
UIPanGestureRecognizer on MKMapView?

Community
  • 1
  • 1
allenlinli
  • 2,066
  • 3
  • 27
  • 49