2011-04-11 2 views
0

J'ai un contrôleur UIWebView qui charge une page Web et je voudrais ajouter une sorte de barre en haut de la page avec les boutons de rafraîchissement et de fermeture. La barre devrait se cacher lorsque la page est chargée et devrait s'afficher à nouveau si l'utilisateur appuie sur la partie supérieure de la page.Ajouter une barre supérieure animée à UIWebView

Est-ce que quelqu'un sait comment l'aborder? Y a-t-il un moyen simple de faire cela?

MISE À JOUR:
Je pense que je ne suis pas assez claire à la question, alors voici quelques précisions:
1. Les applications est une application standard que l'un des flux ouvre UIWebView qui charge une page web
2. Ce que je cherche, c'est une barre qui glisse vers le bas de la page Web (chargée dans UIWebView) et qui devrait aider l'utilisateur à surmonter un scénario où la page Web n'est pas chargée pour une raison quelconque
3. La barre devrait tenir le dos (juste fermer l'UIWebView) et rafraîchir (recharger UIWebView) les opérations.

J'espère que cela a aidé.

Merci, Shimix

+0

Je travaille actuellement sur quelque chose qui utilise quelque chose comme ça. Je serai heureux de partager. Entrez en contact avec moi si vous voulez. – Moshe

+0

Merci Moshe! Nous vous contacterons sous peu ... – Shimix

+0

Vous pouvez me trouver dans la [Meta Tavern] (http: //chat.meta.stackoverflow.com/rooms/89/the-tavern-general), ou mon information de contact est sur mon site Web, mais vous devez creuser là pour cela. – Moshe

Répondre

0

À moins que je manque une bibliothèque/projet faisant cela, je ne pense pas qu'il y ait un moyen simple de le faire.

J'ai déjà quelque chose de semblable à un code barre d'adresse Safari mobile et de la mémoire, il consistait à utiliser apis privés et/ou jouer avec le « pas privée, mais utiliser à vos propres risques »UIWebView subviews hiérarchie ...

+0

Oui, c'est ce que je pensais ... Je me demande pourquoi il n'y a pas de façon simple, car cela semble être une requête commune (même si c'est toujours très difficile de trouver une solution ...). – Shimix

0

Je travaille sur quelque chose comme ça maintenant et jusqu'à présent, voici ce que j'ai trouvé. Une partie de ceci peut être évidente, mais importante:

  • Votre barre d'adresse devrait être la gauche navigationItem. La barre de recherche est le .
  • Vous devez animer un bouton d'annulation d'entrée/sortie lorsque vous commencez/terminez l'édition dans la zone URL.
  • Safari Mobile utilise la propriété Prompt du navigationBar pour afficher les titres des pages Web.
  • Pour animer les largeurs des barres de recherche/URL, utilisez l'animation UIView lorsque la barre est sélectionnée.
+0

Je viens de vous envoyer un e-mail ... – Shimix

+0

Got it, a répondu. – Moshe

0

Il est assez simple d'ajouter un UIToolbar au-dessus de la vue web avec UIBarButtonItems qui appelle les méthodes d'actualisation, de retour et de transfert de la webview. Vous pouvez également ajouter les méthodes webviewdelegate à votre contrôleur de vue pour détecter le chargement de la page et masquer/afficher la barre d'outils de cette façon.

Si vous souhaitez que les contrôles de rafraîchissement et de navigation soient affichés dans le contenu html de la vue Web elle-même, cela est un peu plus simple, mais pas impossible. Vous pouvez utiliser la méthode déléguée shouldLoadRequest de la webview pour détecter que ces boutons ont été sélectionnés, puis effectuer l'action appropriée dans votre viewcontroller. Cacher et afficher la barre de navigation devrait être traitée en javascript.

+0

Merci, mais je ne suis pas sûr que placer la barre au-dessus de la page m'aidera dans ce cas. En outre, le bouton de retour devrait simplement fermer l'UIWebView et le bouton d'actualisation devrait recharger l'UIWebView. Qu'est-ce que tu penses? – Shimix

+0

Si vous utilisez les méthodes UIWebViewDelegate, vous pouvez intercepter les requêtes effectuées dans la vue Web. Ainsi, dans la barre de votre contenu Web, faites le lien image du bouton arrière avec href = "webview_go_back" ou quelque chose comme ça, puis dans la méthode de délégué webViewShouldStartRequest, vérifiez "webview_go_back" dans l'url de la requête et vous serez en mesure de dire quand l'utilisateur a appuyé sur le bouton de retour dans le webview. Alors faites ce que vous voulez, fermez le webview, peu importe. Cela a-t-il du sens? – CharlieMezak

+0

Oui et j'ai effectivement mis en place le bouton "retour" dans la page Web pour pointer vers une URL spéciale et le gérer avec la méthode de délégué. Mais que se passe-t-il si la page Web elle-même ne se charge pas du tout? Dans ce cas, le bouton "retour" de la page Web ne s'affiche pas ... Comment l'utilisateur peut-il revenir à l'application? – Shimix

Questions connexes