2012-03-30 3 views
5

В настоящее время я принимаю this sample website и покажу в своем веб-обзоре. Веб-страница отображается правильно.Получение выбранных элементов программно из uiwebview?

Теперь я пытаюсь выяснить, какие данные выбраны после того, как пользователь нажал на 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).

Может ли кто-нибудь объяснить, как это сделать?

+0

Подходит ли HTML-страница под ваш контроль? – sergio

+0

Нет, это не под моим контролем. Но все же вы можете предложить свой оппонент :) – raaz

ответ

0

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

0

Когда пользователь делает выбор на UIWebView, сделать запрос HTTP AJAX, что вы можете перехватить в вашей UIWebViewDelegate реализации метода

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

.

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

2

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

  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, имеют вид на this article about a glitch in elementFromPoint.

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

+0

Будьте предупреждены, что это плохо работает для изображений Google или других сайтов, которые отображают изображения смешными способами ... – jjxtra

Смежные вопросы