Como faço para colocar um UIWebView em uma célula de exibição de tabela e manter suas barras de rolagem?

StackOverflow https://stackoverflow.com/questions/443333

  •  22-07-2019
  •  | 
  •  

Pergunta

Como posso colocar um UIWebView em uma célula de exibição de tabela, e ainda assim manter as barras de rolagem do UIWebView? Minha vista de tabela tem várias células e uma estrutura de cabeçalho, bem como, e eu preciso que ele seja de rolagem porque tem muitas linhas.

O texto é exibido perfeitamente bem quando eu uso UITextView e mostra scrollers bem, mas o problema é que o meu conteúdo é um texto rico, então eu não tenho nenhuma outra opção mas para mostrar o conteúdo em UIWebView. Todas as ideias, hacks?

Foi útil?

Solução

A menos que a Apple faz alguma coisa, isso pode não funcionar. Ambos os uitableview e UIWebView scrollers de apoio, e eles contradizem uns com os outros. scrollers uitableview tomar precednce assim sempre que uma operação de rolagem é realizada, a ação é enviado para UITableView em vez de UIWebView.

Por alguma razão, quando se utiliza UITextView com UITableView, scrollers trabalhar para ambos.

Outras dicas

O problema com a adição de UIWebView em uma célula da tabela é ambos os objetos são de rolagem (tableview e webview) que irá criar complicações se não for usado adequadamente. Será que você TableView tiver quaisquer outras que UIWebView células? e não é necessário o tableview ser scrollable? No caso da necessidade tableview não ser scrollable, fazer rolagem ativada no webview e desativado para o tableview. Isso deve funcionar.

Mas se você quiser texto do visor apenas, por que não usar um UITextView (embora você vai enfrentar o mesmo problema para UITextView também)?

Eu encontrei este na documentação UIWebView:

"Importante:.. Você não deve incorporar UIWebView ou UITableView objetos em UIScrollView objetos Se você fizer isso, um comportamento inesperado pode resultar porque eventos de toque para os dois objetos podem ser misturados e injustamente tratado"

As barras de rolagem são adicionadas automaticamente quando você coloca conteúdo em seu UIWebView. Certifique-se de desmarcar "Escalas página para Fit" no construtor de interface, de modo que a página não é redimensionado quando exibido.

UIWebView irá exibir automaticamente as barras de rolagem quando se tem conteúdo que excede a altura do UIView.

Você pode colocar um UIWebView em um UIScrollView e ambos têm de rolagem, definindo a propriedade canCancelTouchEvents do UIScrollView para NO. Se você acabou de súbito, a UIScrollView irá rolar. Se você segurar o dedo para baixo por um curto período de tempo e, em seguida, começar a filme, a UIWebView vai rolar.

Tente este hack rápido para ver se você pode forçar a vista web para mostrar um indicador de rolagem: ((UIScrollView *) [webView.subViews objectAtIndex: 0]). ShowsVerticalScrollIndicator = SIM;

A abordagem mais completa é dividir os seus conteúdos celulares em um resumo e detalhe. Mostrar o resumo em cada célula, mas sem detalhes. Depois de selecionar uma célula, use uma nova tela para mostrar todo o conteúdo da célula selecionada. Isso evita completamente a questão da usabilidade de ter uma visão interna de rolagem de uma visão de rolagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top