2010-07-21 2 views
3

Если добавить жест распознаватель на подклассы UIWebView экземпляр с именем webView и т.д .:Как добавить распознаватель жестов в подкласс UIWebView?

UILongPressGestureRecognizer *_longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(webViewGestureRecognized:)]; 
_longPressRecognizer.allowableMovement = 20; 
_longPressRecognizer.minimumPressDuration = 1.0f; 
[webView addGestureRecognizer:_longPressRecognizer]; 
[_longPressRecognizer release], _longPressRecognizer = nil; 

Селектор -webViewGestureRecognized: не вызывается, когда я выполнить длинное нажатие.

Я переопределил метод делегата -gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:, но селектор длинной печати все еще не вызывается.

- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 
    return YES; 
} 

Есть ли что-нибудь, что я могу сделать, чтобы включить мой собственный распознаватель жестов в Интернете?

+0

Вы решили эту проблему? Я также работаю над одной и той же проблемой ... Пожалуйста, помогите мне ip, которую вы решили. – Warrior

+0

Это работает для меня. Вы пробовали * не устанавливали * допустимое перемещение и минимумPressDuration? Почему _longPressRecognizer = nil? Не ясно. – Alex1987

+0

Не могли бы вы отправить ответ, если вы решили эту проблему? Я также ищу то же самое. Ваш ответ будет оценен. –

ответ

2

Вы должны использовать JavaScript в UIWebView для обнаружения жестов. (Затем вы можете сообщить об этом обратно в Objective-C, если вам нужно.) Это Apple's docs по обнаружению жестов и касаний в Javascript. Я также нашел, что это article полезно, хотя он использует библиотеку javascript для обработки привязки событий и т. Д.

Вот рабочий пример ущемления для увеличения UIWebView, который стоит отдельно.

Обратите внимание, что элемент тела прослушивает событие. На короткой странице, похоже, не поймать ее, если вы делаете это событие в огромных непрозрачных пробелах ниже. (Если кто-то знает больше об этом, пожалуйста, оставьте комментарий.)

<body id='body'> 
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 

<script type="text/javascript" charset="utf-8"> 

    body = document.getElementById('body'); 

    // (in percents) 
    zoom = 100; 
    maxZoom = 200; 
    minZoom = 50; 
    zoomIncrement = 25; 

    function gestureEnd(event) { 
     var newZoom; 
     if (event.scale > 1.0) { 
      // increase size 
      newZoom = zoom + zoomIncrement; 
     } else { 
      // decrease size 
      newZoom = zoom - zoomIncrement; 
     } 

     // don't exceed zoom boundaries 
     if (newZoom > maxZoom || newZoom < minZoom) { 
      return; 
     } 
     zoom = newZoom; 
     body.style.webkitTextSizeAdjust = zoom+"%"; 
    } 

    body.addEventListener("gestureend", gestureEnd, false); 

    </script> 
</body> 
+0

У меня нет контроля над веб-контентом, поэтому это не полезно для моего использования. –

+0

Не могли бы вы ввести тег '

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