Ir para conteúdo
  • Cadastre-se

Duvidas UIWebView


Posts Recomendados

no meu app fiz o seguinte,

tenho uma TabBar, criei a classe info.h, info.m info.xib e setei ela para abrir em uma das Views do meu TabBar,

até ai blz, criei no meu info.xib um botao do facebook, abrindo uma Modal (facebook.xib) da nova classe que criei

no facebook.h coloquei:


#import <UIKit/UIKit.h>
@interface facebook : UIViewController <UIWebViewDelegate> {

IBOutlet UIWebView *webViewFacebook;
IBOutlet UIActivityIndicatorView *spinerFacebook;
}

@property(nonatomic,retain) IBOutlet UIWebView *webViewFacebook;
-(IBAction)fechar:(id)sender;
@end
[/CODE]

em facebook.m :

[CODE]
@synthesize webViewFacebook;
-(IBAction)fechar:(id)sender{

[self dismissModalViewControllerAnimated:YES];
}
// ativa indicador
- (void)webViewDidStartLoad:(UIWebView *)webView {

[spinerFacebook startAnimating];
}
//desativa indicador

- (void)webViewDidFinishLoad:(UIWebView *)webView {
[spinerFacebook stopAnimating];
}

[/CODE]

[CODE]
- (void)viewDidLoad
{
[super viewDidLoad];

NSString *url_endereco = @"http://www.facebook.com";
NSURL *url = [NSURL URLWithString:url_endereco];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

[webViewFacebook loadRequest:requestObj];
// carrega pagina do facebook assim que a Modal é chamada
[/CODE]

declarei no facebook.xib minha WebView como delegate, para que os indicadores funcionem e conclui com todas ligação do IB,

executei o programa e funcionou blz, exeto o teclado, quando minha Modal é chamada abre a pagina do facebook, quando clico nos campos para loguin a pagina rola corretamente até o campo, POREM O TECLADO NAO SOBE,

fiz um progeto novo sem criar uma classe, colocando as funções direto no ViewController, e funcionou corretamente, mas no meu app original, o teclado nao funciona,

criei as classes corretamente (UIViewController Subclass), ja revisei varias vezes,

alguma dica ?

Editado por sanchessd
Link para o comentário
Compartilhar em outros sites

  • Respostas 18
  • Criado
  • Última resposta

Top Postadores Neste Tópico

Olá!

Para que não falhe a chamada do teclado, vc deve implementar o Delegate das caixas de texto.

No seu arquivo facebook.h, acrescente <UIWebViewDelegate, UITextFieldDelegate>

Acrescentado o Delegate do UITextField no arquivo facebook.h, agora precisamos implementá-lo.

No ViewDidLoad, no arquivo de implementação (facebook.m) acrescente:

objeto_text_field.delegate = self;

Note que no lugar de "objeto_text_field" vc deve colocar o nome de seu objeto (aquele que recebe entrada de texto).

Implemente, ainda no arquivo facebook.m, o seguinte método Delegate:

-(void)textFieldDidBeginEditing:(UITextField *)textField {

[textField becomeFirstResponder];

}

Quando o usuário terminar a edição e pressionar (tap) Return, implemente o seguinte método Delegate para retirar o teclado:

-(BOOL)textFieldShouldReturn:(UITextField *)textField {

[textField resignFirstResponder];

return YES;

}

Note que o parâmetro textField refere-se ao objeto de entrada de texto em questão, não necessitando nomeá-lo.

Isso deve resolver!

Espero ter ajudado!! ;)

Editado por trindadde
Link para o comentário
Compartilhar em outros sites

Certo, mas na verdade nao tenho nenhum TextField,

a interaçao com o usuario será somente com a propria pagina do facebook, nenhum TextField será colocado, sua solução funcionaria para caso eu fosse colocar um TextField para que o usuario digitasse a pagina para ser carregado, como se fosse um navegador.

na WebView será carregada somente a pagina do facebook, e o usuario poderá navegar somente dentro dela, e nenhum outro site.

como comentei no primeiro post, fiz um novo progeto separado com a WebView e a implementaçao direto no ViewController, e funciona ok.

ja no meu progeto original, criei uma nova classe para incluir no meu tabBar, talves possa estar ai o problema, mas tudo que eu fiz documentei no primeiro post.

Obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

Ok.

Verifique se foi feito o Delegate da WebView com a classe, segurando control enquanto clica sobre a WebView e arrasta para o controller da classe, conforme a figura:

webviewdelegate.png

Uma outra situação que me ocorre é se a WebView não está marcada para interação com o usuário. Nessa nova classe que vc criou, vc se atentou para o check box do WebView de interação com o usuário?

Isso também pode ser ativado via código:

minhaWebView.userInteractionEnabled = YES;

Editado por trindadde
Link para o comentário
Compartilhar em outros sites

CORRIGINDO E COMPLEMENTANDO MINHA RESPOSTA:

Ok.

Verifique se foi feito o Delegate da WebView com a classe, segurando control enquanto clica sobre a WebView e arrasta para o controller da classe e verificando na guia Connections, conforme as figuras:

webviewdelegate.pngdelegate.png

Uma outra situação que me ocorre é se a WebView não está marcada para interação com o usuário. Nessa nova classe que vc criou, vc se atentou para o check box do WebView de interação com o usuário?

Isso também pode ser ativado via código:

minhaWebView.userInteractionEnabled = YES;

Link para o comentário
Compartilhar em outros sites

sim, ja verifiquei isso, foi feito o delegate da WebView, e ja chequei também se a interação com o usuario está marcada,

refiz um progeto novo com o mesmo codigo e funciona certinho, a unica coisa de diferente é que nao implementei o codigo direto no viewController que é gerado quando crio o progeto, criei uma classe nova para implementar o codigo.

nao tem alguma outra regra pra quando se cria uma classe nova ? Na teoria acredito que nao, mas voce ja fez isso ?

como passei no primeiro post, tenho uma tabBar, criei uma classe e vinculei ao TabBar, nessa classe na .xib tenho um botao do facebook, que nele abre uma Modal, no DidUnload coloquei o codigo para abrir na webView, como citado no primeiro post,

A webView carrega tudo certo, mas nao abre o teclado nos campos do facebook, e ja tentei outros sites, mas também nao funciona!

Link para o comentário
Compartilhar em outros sites

Pelo que vi no seu código, no arquivo ViewController.m em ViewDidLoad vc deve informar quem é o responsável por implementar os métodos delegados da WebView.

Coloque em ViewDidLoad o seguinte:

minhaWebView.delegate = self;

e me diga se mudou alguma coisa. Caso não dê certo ainda, pensaremos em outras possibilidades.

Editado por trindadde
Link para o comentário
Compartilhar em outros sites

fiz o que me disse mas nao resolveu.

montei um progeto só com meu problema para que voce possa ver o que acontece;

http://www.crocko.co...esteWebView.zip

baixe esta simulaçao , e veja que o teclado nao sobe, fiz a mesma coisa que no progeto original!

Dica: quando for passar arquivos use a ferramenta de anexo do fórum ou, se preferir fazer upload em um site, faça no mediafire, que é mais rápido pra você e pra gente, porque não temos que esperar 1,5 minutos para podermos baixar o arquivo.

Link para o comentário
Compartilhar em outros sites

fiz o que me disse mas nao resolveu.

montei um progeto só com meu problema para que voce possa ver o que acontece;

http://www.crocko.co...esteWebView.zip

baixe esta simulaçao , e veja que o teclado nao sobe, fiz a mesma coisa que no progeto original!

Cara, não consegui ver o que você fez de errado, mas acho que tem a ver com criar um projeto vazio. Cria, do zero, um novo projeto com template de tabbar. Acho que assim você consegue. Aqui o que eu fiz:

WebView.zip

PS: Desculpa se pareci grosseiro quando disse "porque não temos que esperar 1,5 minutos para podermos baixar o arquivo. " Não foi no sentido de "não temos a obrigação de ficar esperando", foi com o sentido de "Usando o Mediafire não precisaremos esperar aquele minuto e meio".

Editado por Gabriel Vincent
Link para o comentário
Compartilhar em outros sites

claro, sem problemas, estou aqui para aprender o melhor,

a respeito do progeto, sim eu ja fiz um igual ao que voce postou sem o tabBar, e funcionou também, só que quando crio a tabBar , eu crio a classe Info e coloco em um dos itens do tabBar, dentro da classe Info abro a modal Facebook, que é onde o codigo está implementado, e ao abrir essa classe (facebook) o teclado nao funciona.

realmente nao sei o que fazer, pq o codigo "supostamente" estaria certo.

Link para o comentário
Compartilhar em outros sites

claro, sem problemas, estou aqui para aprender o melhor,

a respeito do progeto, sim eu ja fiz um igual ao que voce postou sem o tabBar, e funcionou também, só que quando crio a tabBar , eu crio a classe Info e coloco em um dos itens do tabBar, dentro da classe Info abro a modal Facebook, que é onde o codigo está implementado, e ao abrir essa classe (facebook) o teclado nao funciona.

realmente nao sei o que fazer, pq o codigo "supostamente" estaria certo.

É verdade... muito estranho mesmo. Mas esse é um problema muito claramente de stack, só não consigo entender onde está o problema...

Link para o comentário
Compartilhar em outros sites

Então. Da mesma forma que já foi citado aqui, eu também não estou encontrando problemas com o seu código e seu projeto. Contudo, se funcionou fazendo através de uma nova classe, mantenha dessa maneira! É até mais adequado para seguir o paradigma do MVC ;)

Aliás, vc tentou migrar esse projeto para o ARC e StoryBoard? Tente fazer isso e ver se faz alguma diferença o gerenciamento automático da memória. Depois poste aqui se deu certo!

Boa sorte!

Editado por trindadde
Link para o comentário
Compartilhar em outros sites

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.



  • Estatísticas do Fórum

    • Total de Tópicos
      56.5k
    • Total de Posts
      466.1k
×
×
  • Criar Novo...