Eu tenho que mostrar um artigo da web com um UITableView
abaixo do artigo.
A única opção que encontrei foi exibir o artigo em um UIWebView
no cabeçalho tableView.
Para fazer isso, preciso obter a altura do conteúdo do webView e desativar a rolagem do webView.
Encontrei duas soluções para desativar a rolagem:
for (id subview in webView.subviews)
if ([[subview class] isSubclassOfClass: [UIScrollView class]])
((UIScrollView *)subview).scrollEnabled=NO;
ou em JavaScript:
<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}
Ouvi dizer que a primeira solução é proibida pela Apple mas não tenho nenhuma prova disso. Minha inscrição será rejeitada com o uso desta solução? Em caso afirmativo, posso usar a segunda solução sem ser rejeitado?
webView.scrollView.bounces = NO;
? já que o código da primeira linha desabilitou a rolagem.Uma vez que esta questão ainda é aplicável, existe uma nova maneira de fazê-lo! (iOS 7.0+, talvez iOS 6 também, não confirmado)
Cuidar :)
fonte
Você pode simplesmente definir a propriedade de interação do usuário da visualização da web como no ie
É muito simples e funciona bem, obrigado :)
fonte
para todas as versões ios, você pode usar este código em vez de setScrollEnabled:
fonte
Use este
<body ontouchmove="event.preventDefault()">
fonte
Versão SWIFT 3
fonte
Eu acho que o Javascript
é de longe a melhor solução.
De fato :
Seu primeiro exemplo, ou o
uma (mesmas coisas) pode ser rejeitada por não estar documentada ou fazer seu aplicativo travar em uma nova atualização do ios.
E a
método não funciona com iOS <5.
fonte
isso resolveu para mim
fonte
O primeiro é rejeitado pela Apple. Aconteceu comigo esta manhã.
fonte
[[myWebView scrollView] setBounces: NÃO];
fonte
Não acho que a primeira opção seja proibida pela Apple.
Você poderia tentar
Se você não quiser que nenhum link funcione em seu UIWebView, você também pode fazer
fonte
Use-o :
fonte
Tente isto,
fonte
Coloquei alguns
UIWebView
s dentro de umUIScrollView
e ele não estava rolando para mim, a menos que eu desabilitasse a interação do usuário nos webviews (mesmo com o[[webview scrollview] setScrollEnabled:NO]
). Coloquei osUIWebView
s dentro de umUIView
e funcionou para mim, mas os links interativos ou divs em meu HTML dentro doUIWebView
não funcionaram mais.A única coisa que funcionou para mim é manter o
UIWebView
interior doUIScrollView
para que as interações HTML funcionem, masUIScrolling
não.Em seguida, criei um delegado personalizado para os webviews ouvirem
window.open("http:/customEvent")
que é chamado a partir do HTML contido no webview. Também adicionei uma detecção de furto de JavaScript que acionará meu evento personalizado.Quando o delegado do webview recebe isso, eu passo uma notificação para um controlador que então rola dinamicamente o meu
UIScrollView
. Obviamente, tive que construir uma lógica para monitorar e rolar para a página seguinte ou anterior. Não é a solução mais bonita, mas está funcionando para mim.fonte
Experimente isso em seu HTML (
<HEAD>
tag)Isso desativará a rolagem em sua página da web.
(funciona em qualquer página da web, não apenas UIWebView)
fonte
Eu precisei desabilitar a rolagem porque dispensar um teclado personalizado realmente atrapalhou a rolagem com o webView. Nada mais funcionou e eu recorri a algo assim:
fonte
É um UIWebview e um UITableView em um UIScrollview, e definir a altura do webview (e adicionar ao ContentSize total do Scrollview) como o que você deseja?
fonte
fonte