Получить выбранные элементы программно из uiwebview? - PullRequest
5 голосов
/ 30 марта 2012

В настоящее время я беру этот образец веб-сайта и показываю в моем веб-просмотре.Веб-страница отображается правильно.

Теперь я пытаюсь выяснить, какие данные выбираются после того, как пользователь нажал на uiwebview.

Для этого я могу получить CGPoint для кранаиспользуя 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]

Я хочу получить точные данные, как только пользователь выберет вертикальную черту на первом графике (например, 1994/1995/1996).

Как это сделать

Ответы [ 3 ]

2 голосов
/ 08 апреля 2012

Вы не указываете, что это не работает для вас ... в любом случае, пара предложений:

  1. попробуйте следующие js в вашем обработчике крана:

    NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).innerHTML", touchPoint.x, touchPoint.y];
    
  2. при создании обработчика жестов касания укажите для него делегата (это может быть ваш контроллер):

    tap1.delegate = self;
    
  3. в вашем контроллере (или делегате веб-просмотра) определите следующий метод делегата:

    - (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:    (UIGestureRecognizer*)otherGestureRecognizer {
        return YES;
    }
    
  4. если вы используете iOS 5, взгляните на эту статью о сбое в elementFromPoint.

Делая так, я могу получить точное значение HTML для выбранного объекта.

0 голосов
/ 08 апреля 2012

Когда пользователь делает выбор в UIWebView, отправляет HTTP-запрос AJAX, который вы можете перехватить в UIWebViewDelegate, реализуя

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

способ.

Затем вы можете принять загрузку запроса, заблокировать его, проанализировать, сделать с ним все что угодно.

0 голосов
/ 05 апреля 2012

Если все они являются независимыми элементами DOM, вы должны иметь возможность прослушивать события сенсорного запуска в JavaScript, а когда вы получаете объект события, он должен иметь event.target , это будет элемент, по которому щелкнул пользователь. Затем вы можете получить необходимые данные в JS и затем отправить их обратно в Objective-c. Лучший способ получить данные из JS в нативный код - это использовать UIWebView делегат , надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...