Кто-нибудь знает, как остановить вертикальный отскок UIWebView? Я имею в виду, когда пользователь касается экрана своего iphone, тянет его пальцем вниз, и веб-просмотр показывает пустое место над загруженной веб-страницей?
Я рассмотрел следующие возможные решения, но ни одно из них не помогло мне:
http://forums.macrumors.com/showthread.php?t=619534
Как мне остановить UIScrollView от горизонтального подпрыгивания?
ios
objective-c
iphone
uiscrollview
uiwebview
Брэд Паркс
источник
источник
Ответы:
... кажется, работает нормально.
Он также будет принят в App Store.
Обновление : в iOS 5.x + есть более простой способ -
UIWebView
естьscrollView
свойство, поэтому ваш код может выглядеть так:То же самое и для
WKWebView
.источник
UIWebView
чтобы я мог звонить[webView setBounces:NO]
куда угодно.Я смотрел на проект, который облегчает создание веб-приложений как полноценных устанавливаемых приложений на iPhone под названием QuickConnect , и нашел решение, которое работает, если вы не хотите, чтобы ваш экран вообще прокручивался, что в моем случае Я не
В вышеупомянутом сообщении о проекте / блоге они упоминают функцию javascript, которую вы можете добавить, чтобы отключить подпрыгивание, что по сути сводится к следующему:
Если вы хотите узнать больше о том, как они это реализуют, просто скачайте QuickConnect и проверьте его .... Но в основном все, что он делает, это вызывает этот javascript при загрузке страницы ... Я попытался просто поместить его в заголовок моего документа, и, кажется, работает нормально.
источник
Ну, все, что я сделал для достижения этой цели:
У меня отлично работает ... Кроме того, ответ на этот вопрос отмечен галочкой, который Apple отклонит, если вы используете его в своем приложении для iphone.
источник
UIScrollView
это первое подпредставление,UIWebView
которое вполне может иметь место на данный момент, но это может легко измениться в будущих (даже незначительных) обновлениях iOS или определенных конфигураций. Вы должны действительно выполнитьfor
итерацию,subviews
чтобы действительно найтиUIScrollView
(это действительно не так уж много работы, и, по крайней мере, вы гарантированно получитеUIScrollView
и не разбиваете свою программу ...В iOS 5 SDK вы можете получить доступ к представлению прокрутки, связанному с веб-представлением, напрямую, а не итерировать его подпредставления.
Таким образом, чтобы отключить «подпрыгивание» в представлении прокрутки, вы можете использовать:
Смотрите описание класса UIWebView .
(Однако, если вам нужно поддерживать версии SDK до 5.0, вы должны следовать совету Мирека Русина .)
источник
Свифт 3
источник
Предупреждение. Я использовал setAllowsRubberBanding: в моем приложении Apple отклонила его, заявив, что непубличные функции API недопустимы (цитируем: 3.3.1)
источник
В Swift отключить отскоки
источник
Метод Брэда работал на меня. Если вы используете его, вы можете сделать его немного безопаснее.
Если яблоко что-то изменит, отскок вернется, но по крайней мере ваше приложение не рухнет.
источник
На iOS5 только в том случае, если вы планируете позволить пользователям увеличивать содержимое веб-просмотра (например, двойное нажатие), настройки отказов недостаточно. Вам также необходимо установить для свойств AlwaysBounceHor Horizontal и AlwaysBounceVertical значение NO, в противном случае, когда они уменьшаются (еще один двойной щелчок ...) по умолчанию, они снова будут отскакивать.
источник
Я просмотрел коллекцию подпредставлений UIWebView и установил их фоны [UIColor blackColor], того же цвета, что и фон веб-страницы. Вид будет по-прежнему подпрыгивать, но не будет отображать этот уродливый темно-серый фон.
источник
Мне кажется, что UIWebView имеет UIScrollView. Для этого вы можете использовать документированные API-интерфейсы, но отскок устанавливается для обоих направлений, а не по отдельности. Это в документации по API. UIScrollView имеет свойство bounce, поэтому что-то вроде этого работает (не знаю, существует ли более одного scrollview):
источник
Я был раздражен, узнав, что UIWebView не является представлением прокрутки, поэтому я создал собственный подкласс, чтобы получить представление прокрутки веб-представления. Этот класс содержит вид прокрутки, так что вы можете настроить поведение вашего веб-представления. Изюминки этого класса:
}
Затем, когда вы создаете пользовательское веб-представление, вы можете отключить подпрыгивание с помощью:
Это отличный универсальный способ создания веб-представления с настраиваемым режимом прокрутки. Есть только несколько вещей, на которые стоит обратить внимание:
источник
Наткнулся на это в поисках ответа, и я, в конце концов, просто ударил свой собственный ответ, возиться с ним. я сделал
и это сработало.
источник
Это работало для меня, и прекрасно тоже (я использую PhoneGap с WebView)
или
источник
Я попробовал немного другой подход, чтобы предотвратить прокрутку и отскок объектов UIWebView : добавление распознавателя жестов для переопределения других жестов.
Похоже, что UIWebView или его подпредставление прокрутки использует собственный распознаватель жестов панорамирования для обнаружения пользовательской прокрутки. Но согласно документации Apple, существует законный способ заменить один распознаватель жестов другим. Протокол UIGestureRecognizerDelegate имеет метод gestRecognizer: shouldRecognizeSim одновременноouslyWithGestureRecognizer: -, который позволяет контролировать поведение любых распознавателей столкновения жестов.
Итак, что я сделал
в методе viewDidLoad контроллера представления:
затем метод переопределения жестов:
Конечно, этот метод делегата может быть более сложным в реальном приложении - мы можем выборочно отключить другие распознаватели, анализируя otherGestureRecognizer.view и принимая решение на основе того, что это за представление.
И, наконец, ради полноты, метод, который мы зарегистрировали как обработчик панорамирования:
он может быть пустым, если все, что нам нужно, это отменить прокрутку и отскок веб-просмотров, или он может содержать наш собственный код для реализации движений панорамирования и анимации, которые мы действительно хотим ...
Пока что я просто экспериментирую со всем этим, и кажется, что он работает более или менее так, как я этого хочу. Я пока не пытался отправить какие-либо приложения в iStore. Но я считаю, что до сих пор я не использовал ничего недокументированного ... Если кто-то найдет это иначе, пожалуйста, сообщите мне.
источник
Вот два новых потенциальных решения. По-видимому, вы можете использовать jqtouch или pastrykit, чтобы отключить прокрутку. Тем не менее, я не получил их на работу. Вы могли бы быть более компетентным.
отключение вертикальной прокрутки
копаться в пастрыките
источник
исправлено позиционирование на мобильном сафари
Эта ссылка мне очень помогла ..... Это легко .. Есть демо ..
источник
(Пример Xcode 5 для iOS 7 SDK) Вот пример универсального приложения, использующего функцию scrollview setBounces. Это проект / пример с открытым исходным кодом, расположенный здесь: Ссылка на SimpleWebView (Пример Zip и исходного кода проекта)
источник
Одним из подпредставлений
UIWebView
должно бытьUIScrollView
. Установите для этогоscrollEnabled
свойства значение,NO
и прокрутка будет полностью отключена.Примечание: технически это использует частный API, и, следовательно, ваше приложение может быть отклонено или аварийно завершено в будущих версиях ОС. Используйте
@try
иrespondsToSelector
источник
Посмотрите в
bounces
собственностьUIScrollView
. Quot Apple документы:Убедитесь, что вы используете право
UIScrollView
. Я не уверен, как выглядит иерархия для aUIWebView
, но представление прокрутки может быть родительским, а не дочернимUIWebView
.источник
Чтобы отключить
UIWebView
прокрутку, вы можете использовать следующую строку кода:В этом примере
ObjWebview
имеет типUIWebView
.источник
webView.scrollView.scrollEnabled = NO; webView.scrollView.bounces = NO;
источник