Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting selected elements programmatically from uiwebview?

Currently I am taking this sample website and showing in my webview. The webpage is displaying correctly.

Now I am trying to figure out which data is selected once the user has tapped on the uiwebview.

For this I am able to get the CGPoint for the tap by using UITapGestureRecognizer.

-(void)singleTap:(UIGestureRecognizer *)gestureRecognizer
{

    CGPoint touchPoint = [gestureRecognizer locationInView:myWebView];

    NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).toString()", touchPoint.x, touchPoint.y];

    NSString * tagName = [myWebView stringByEvaluatingJavaScriptFromString:js];

    NSLog(@"Selected Name: %@",tagName); 

}

// In log it is displaying [object SVGPathElement]

I want to get the exact data once user selects the vertical bar in first graph (E.g. 1994/1995/1996).

How to do this?

like image 368
raaz Avatar asked Nov 05 '22 02:11

raaz


1 Answers

You don't specify what is that is not working for you... anyway, a couple of suggestions:

  1. try with the following js in your tap handler:

    NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).innerHTML", touchPoint.x, touchPoint.y];
    
  2. when creating your tap gesture handler, specify a delegate for it (it can be your controller):

    tap1.delegate = self;
    
  3. in your controller (or web view delegate), define the following delegate method:

    - (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:    (UIGestureRecognizer*)otherGestureRecognizer {
        return YES;
    }
    
  4. if you are using iOS 5, have a look at this article about a glitch in elementFromPoint.

By doing like this, I am able to get the exact HTML value for the selected object.

like image 178
sergio Avatar answered Nov 12 '22 11:11

sergio