События касания Javascript в UIWebview, который встроен в UIScrollview - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть вопрос в отношении событий javascript и touch в UIWebview, когда UIWebview встроен в UIScrollview.

UIScrollview имеет несколько представлений (я буду называть их «подпредставлениями» дляпростота) бок о бок внутри него.Каждое подпредставление имеет размер экрана iPad, и пролистывание влево / вправо должно перейти к следующему / предыдущему подпредставлению.Одним из этих подпредставлений является UIWebview, в котором я запускаю небольшое приложение javascript, которое использует сенсорные события и, в некоторых случаях, компонент iScroll.

К сожалению, тот факт, что UIWebview встроен в UIScrollview (практика, которую Apple не рекомендует: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html - см. Поле с надписью «важный»), не в моих руках.

У меня проблема с сенсорными событиями при перелистывании в подпредставлении UIWebview.Например, если я загружаю главную страницу google, смахивание работает нормально, и появляется следующее подпредставление.Однако, когда я загружаю одно из приложений JS, смахивание не работает.

Я предполагаю, что компонент UIWebview получает события касания и передает их в Javascript внутри него, чтобы он мог реагировать соответствующим образом.Затем он также распространяет их обратно на UIScrollview?Или дело в коде Javascript, который гарантирует, что он не "stopPropagation" для события?Любая информация о том, как эти события координируются, была бы очень признательна.

Наконец, я - программист javascript, а не цель-c, хотя я понимаю основы этого, то есть прошел честныйнесколько из серии видеофильмов Objective-C из Стэнфордского iTunes для iOS и кодирование нескольких демонстраций, но это все.

Большое спасибо за ваше время.

1 Ответ

0 голосов
/ 18 февраля 2011

Неудобные страницы шире, чем UIWebView? Если вы установите для свойства scalesPageToFit значение YES и отключите отскоки на внутреннем UIScrollView, который использует UIWebView, это должно решить проблему.

Для отключения отказов можно использовать следующее:

for (UIView *view in webView.subviews) {
    if (![[view class] isSubclassOfClass:[UIScrollView class]]) continue;
    ((UIScrollView *)view).bounces = NO;
    break;
}

Однако нет никаких гарантий относительно одобрения App Store, поскольку я использовал это только для приложений, которые не распространялись через App Store.

...