Я знаю, эта нить старый, но если кто-то попадается это новый способ.
Начиная с iOS 5 UIWebView
теперь есть свойство scrollView
, которое вы не можете заменить, но вы можете установить его свойства. Большинство людей просто хотят, чтобы отключить масштабирование/подпрыгивая/прокрутка все вместе, что может быть сделано путем установки свойства Scrollview, например, если webview
является UIWebView
:
webview.scrollView.bounces = NO; //Disables webview from bouncing
webview.scrollView.minimumZoomScale = webview.scrollView.maximumZoomScale = 1.0; //Forces zoom to be at 1 (can be whatever you fancy) and disables zooming
webview.scrollView.bouncesZoom = NO; //Disables bouncing when zooming exceeds minimum or maximum zoom
Я полагаю, вы могли бы установить делегат для Scrollview, если вам нужен больше контроля, хотя, чтобы быть в безопасности, вы можете захотеть сохранить оригинал делегата и соответствующим образом вызвать его методы в своем пользовательском делетете.
Обработка касаний будет сложнее, поскольку вы не можете заменить scrollView, чтобы предоставить свои собственные обработчики. Лучшее, что вы можете сделать, это добавить распознавателей жестов в качестве части UIView
и попытаться обработать их там, но я думаю, что UIWebView
все равно получит события. Альтернативно, в iOS 5 они позволяют вам получить доступ к распознавателям жестов непосредственно на UIScrollView
.
Предполагается, что Apple не изменит макет или порядок подпрограмм UIWebView в течение всего срока службы вашего приложения, которое обычно работает, и является обычным «взломом». – Russ
@ Russ Я согласен, что это не вечно действительный подход. Тогда любое предложение решения? –
и немного лучший «взлом», который я видел, это (правильный код ускользает от меня, его на моем mac): 'for (UIView * v in [subviews webView]) { if ([v class] == [UIScrollView class]) { // Делаем материал в виде прокрутки здесь } } ' } Это будет адаптироваться, если индекс изменится, но если они должны были встроить более 1 UIScrollView (который они советуют против жестов, запутанных) то вы либо примените его ко всем, либо можете выйти из режима ожидания и надеяться, что первый из них вам нужен. Если они меняют структуру, то вы можете использовать мой iOS 5 ответ ниже – Russ