Ionic-framework: Problèmes de clavier

Créé le 3 mai 2017  ·  98Commentaires  ·  Source: ionic-team/ionic-framework

Version Ionic: (cochez une case avec "x")
[] 1.x
[x] 2.x
[x] 3.x

Je soumets un ... (cochez une case avec "x")
[x] rapport de bogue
[] demande de fonctionnalité
[] support request => Veuillez ne pas soumettre de demandes d'assistance ici, utilisez l'un de ces canaux: https://forum.ionicframework.com/ ou http://ionicworldwide.herokuapp.com/

Comportement actuel:

Les claviers et le défilement des entrées ont longtemps été un défi pour les applications Ionic, allant même jusqu'à Ionic V1. Nous nous sommes récemment attachés à essayer d'éliminer ces problèmes de clavier. Les problèmes que nous pensons actuellement être la priorité absolue en ce qui concerne les claviers et les entrées sont les suivants:

  • les entrées dans les alertes sont parfois «bancales»
  • Les formulaires qui ont beaucoup d'entrées ont parfois des problèmes de défilement lors de la focalisation des entrées plus bas sur la page
  • Le basculement entre les entrées, les zones de texte et plus encore provoque parfois un «rebond» et d'autres problèmes d'interface utilisateur étranges
  • Avoir une entrée verrouillée en bas d'une vue ne fonctionne pas correctement sur iOS (le clavier couvre l'entrée)

Nous travaillons actuellement sur une approche à deux volets de modification de la logique dans le cadre qui gère ce problème (principalement pour Android) ainsi que quelques modifications du plugin WKWebView pour résoudre ces problèmes pour iOS. Nous sommes maintenant à un point où nous avons une branche du plugin WKWebView qui contient les correctifs pour iOS et nous sommes prêts pour que notre communauté commence à tester cela et à fournir des commentaires. Nous avons créé ici un document Google contenant des instructions sur la façon dont cela peut être testé. Nous aimerions avoir des commentaires sur ces correctifs! N'hésitez pas à nous faire part de vos commentaires sur ce problème. Merci d'utiliser Ionic tout le monde!

help wanted v3

Commentaire le plus utile

Dans mon cas, AppModule en ajoutant l'importation ci-dessous produit une expérience utilisateur relativement meilleure que les valeurs par défaut.

IonicModule.forRoot(MyApp, {
            scrollPadding: false,
            scrollAssist: true, 
            autoFocusAssist: false
        }),

Tous les 98 commentaires

Dans mon cas, AppModule en ajoutant l'importation ci-dessous produit une expérience utilisateur relativement meilleure que les valeurs par défaut.

IonicModule.forRoot(MyApp, {
            scrollPadding: false,
            scrollAssist: true, 
            autoFocusAssist: false
        }),

Dieu merci, enfin les prières sont exaucées

  1. La barre de recherche dans l'onglet pousse la barre d'onglets vers le haut.

Comment tester sur Android?
Nous sommes heureux de vous aider toujours pour Android ou Desktop. :)

@ mburger81 , bonne question! Il n'y a pas encore de version nocturne mise à jour de ionic-angular out, mais lorsque nous en publierons une, je mettrai à jour ce problème avec les instructions sur la façon dont vous pouvez l'installer pour le tester sur Android.

Ok, nous travaillons sur une page de connexion où nous avons des problèmes de défilement d'entrée.
Je pense donc que nous pouvons le vérifier.

Pour info, avant de pouvoir le tester et le publier sur notre testeur, nous devons avoir résolu le bogue INVALID VIEWS (heureux pour le jalon), car il s'agit d'un problème majeur pour nous

Got ya! Donc, sur le problème du défilement d'entrée, pouvez-vous essayer de placer l'entrée dans une zone de votre vue que le clavier ne couvre pas lorsqu'il est ouvert?

C'est une bonne idée. Il faut s'assurer que le curseur ne passe pas derrière la barre, lors du défilement

Il faut faire, que le curseur ne bloque pas l'en-tête ionique, lors d'un

Quelques commentaires iOS de l'un des membres de notre équipe @danbucholtz :

Sur les contrôles individuels qui ne sont généralement pas utilisés dans un formulaire (par exemple une entrée de recherche), pouvons-nous étudier la fermeture du clavier sur «soumettre» ou «entrer»?

Lors de l'exécution d'une action de navigation, le clavier se ferme automatiquement s'il est ouvert. Nous devrions revoir ce comportement en ce qui concerne les superpositions. Par exemple, je ne peux pas imaginer qu'il existe de nombreux cas d'utilisation lors de l'ouverture d'un modal et du maintien du clavier ouvert. ActionSheet, Alert, Loading, Modal, Popover, Picker et Toast impliquent tous le début d'une nouvelle action (Choisir une heure par exemple) ou des commentaires sur une action terminée (soumettre ou valider un formulaire ou quelque chose). Je pense qu'il est logique de fermer le clavier en cas d'ouverture d'une superposition.

chats.html

<ion-footer *ngIf="send.load_spinner==false" class="backgound_send_message">
<ion-toolbar>

<textarea *ngIf="Record.StartRecordGo==false" [(ngModel)]="you_comment" (keydown)="handleKeyDown($event)" (focus)="scrollTobottom()" placeholder="{{'chats.message' | translate }}"  id="my-textarea0" class="my-textarea" rows="1" autosize></textarea>

    <button ion-button clear large color="primary" *ngIf="send.you_comment.length>0" (click)="SendMessageServer(items)"><ion-icon class="SendMess" ios="ios-send-outline" md="md-send"></ion-icon></button>


</ion-toolbar>
</ion-footer>

chats.ts

SendMessageServer(items) {
    this.text_message_me.push(this.you_comment);
   document.getElementById('my-textarea0').focus(); // The keyboard remains open
}

Ce code ça marche (OPEN KYEBOARD)

<ion-footer>
<ion-toolbar>
<textarea></textarea>
</ion-footer>
</ion-toolbar>

Cela change bien la hauteur, mais il vaut mieux faire l'animation lorsque la taille change

https://forum.ionicframework.com/t/no-documentation-for-scrollassist-autofocusassist-inputblurring-config-settings/88450?u=rohinmohandas

Il pourrait être utile d'avoir la documentation pour ces configurations si * elles peuvent aider à résoudre ces problèmes liés au clavier et aux entrées, peut-être jusqu'à ce que la version 3.2.0 soit rendue publique.

Une solution liée au cas où le clavier cache l'entrée?

Le code suivant dans app.component.ts a produit les effets souhaités des entrées de pied de page restant au-dessus du clavier dans iOS et Android. Pour une raison quelconque, le comportement de superposition de la barre d'état dans Android affecte la façon dont le clavier masque les éléments d'entrée positionnés sous la hauteur du clavier.

import {Platform} from "ionic-angular";
import {Keyboard} from "@ionic-native/keyboard";
import {StatusBar} from "@ionic-native/status-bar";
import {SplashScreen} from "@ionic-native/splash-screen";

constructor(platform: Platform,public statusBar: StatusBar, public splashScreen: SplashScreen,
                public keyboard: Keyboard) {

        platform.ready().then(() => {
            if (platform.is("ios")) {
                statusBar.overlaysWebView(true);
                statusBar.styleBlackTranslucent();
            }
            splashScreen.hide();
            keyboard.hideKeyboardAccessoryBar(false); // use only on a need basis if accessory bar is needed.
            .
            .
            .

            }

Il faut faire, que le curseur ne bloque pas l'en-tête ionique, lors d'un
key2
key1

Il y a une chance que le # 7047 soit également corrigé?

Comment cela fonctionne-t-il réellement dans les navigateurs? Est-ce qu'ionic ajoute des fonctionnalités supplémentaires qui interrompent les entrées, ou s'agit-il simplement d'un problème difficile avec les champs d'entrée sur mobile?

C'est ma solution , ça marche bien.

  1. définir hideKeyboardAccessoryBar à true
this.keyboard.hideKeyboardAccessoryBar(true)
  1. créer KeyboardAttachDirective.ts fichier
import { Directive, ElementRef, Input } from '@angular/core';
import { Content, Platform } from 'ionic-angular';
import { Keyboard } from '@ionic-native/keyboard';
import { Subscription } from 'rxjs/rx';


/**
 * <strong i="15">@name</strong> KeyboardAttachDirective
 * <strong i="16">@description</strong>
 * The `keyboardAttach` directive will cause an element to float above the
 * keyboard when the keyboard shows. Currently only supports the `ion-footer` element.
 *
 * ### Notes
 * - This directive requires [Ionic Native](https://github.com/driftyco/ionic-native)
 * and the [Ionic Keyboard Plugin](https://github.com/driftyco/ionic-plugin-keyboard).
 * - Currently only tested to work on iOS.
 * - If there is an input in your footer, you will need to set
 *   `Keyboard.disableScroll(true)`.
 *
 * <strong i="17">@usage</strong>
 *
 * ```html
 * <ion-content #content>
 * </ion-content>
 *
 * <ion-footer [keyboardAttach]="content">
 *   <ion-toolbar>
 *     <ion-item>
 *       <ion-input></ion-input>
 *     </ion-item>
 *   </ion-toolbar>
 * </ion-footer>
 * ```
 */

@Directive({
    selector: '[keyboardAttach]'
})
export class KeyboardAttachDirective {
    @Input('keyboardAttach') content: Content;

    private onShowSubscription: Subscription;
    private onHideSubscription: Subscription;

    private attachTime = 0;

    constructor(
        private elementRef: ElementRef,
        private platform: Platform,
        private keyboard: Keyboard
    ) {
        if (this.platform.is('cordova') && this.platform.is('ios')) {
            this.onShowSubscription = this.keyboard.onKeyboardShow().subscribe(e => this.onShow(e));
            this.onHideSubscription = this.keyboard.onKeyboardHide().subscribe(() => this.onHide());
        }
    }

    ngOnDestroy() {
        if (this.onShowSubscription) {
            this.onShowSubscription.unsubscribe();
        }
        if (this.onHideSubscription) {
            this.onHideSubscription.unsubscribe();
        }
    }

    private onShow(e) {
        let keyboardHeight: number = e.keyboardHeight || (e.detail && e.detail.keyboardHeight);

        if(this.attachTime > 1){
            if(
            keyboardHeight == 313 ||
            keyboardHeight == 258 ||
            keyboardHeight == 216 ||
            keyboardHeight == 253 ||
            keyboardHeight == 226 ||
            keyboardHeight == 271 ||
            keyboardHeight == 216 ||
            keyboardHeight == 264){
                this.setElementPosition(0)
            }else{
                if(this.attachTime > 2){
                    this.setElementPosition(0)
                }else{
                    this.setElementPosition(keyboardHeight);
                }
            }
        }else{
            this.setElementPosition(keyboardHeight);
        }
        this.attachTime ++
    };

    private onHide() {
        this.setElementPosition(0);
        this.attachTime = 0
    };

    private setElementPosition(pixels: number) {
        this.elementRef.nativeElement.style.paddingBottom = pixels + 'px';
        this.content.getScrollElement().style.marginBottom = (pixels + 44) + 'px';
        this.content.scrollToBottom()
    }
}
  1. utilisation
<ion-header (touchstart)="closeKeyboard()"></ion-header>

...

<ion-content #content (touchstart)="closeKeyboard()"></ion-content>

...

<ion-footer [keyboardAttach]="content" class="messagebar">
    <ion-toolbar no-border>
        <div class="toolbar-inner">
            <div #inputer style="-webkit-user-select: auto;padding:5px;font-size:16px; min-height:1.5em; width:100%;border:1px solid #ccc;background-color:#fff;" contenteditable="plaintext-only" (keyup)="keyup($event)" (focus)="onFocus($event)" (blur)="onBlur($event)"></div>
            <button ion-button small (tap)="send()" [disabled]="!msgContent.length">发送</button>
        </div>
    </ion-toolbar>
</ion-footer>
  1. ajouter des méthodes à XXXPage.ts
    onBlur(event) {
        if (this.keyboardOpen) {
            event.target.focus()
        }
    }

    keyup(event){
        this.msgContent = event.target.innerText
    }

    onFocus(event) {
        this.keyboardOpen = true
    }

    closeKeyboard() {
        this.keyboardOpen = false
        this.keyboard.close()
    }

lien perview.gif

lien preview.mov

@ lh4111 Super! Mais avez-vous testé sous Android? Cela ne semble pas fonctionner.

Nous avons le même problème que @aspidvip
@ lh4111 puis-je vous demander quelle est votre solution? Cela résout-il le problème avec l'entrée sous l'en-tête?

@kitkimwong Je n'ai pas testé sur Android, mais je pense que les principes devraient être similaires.

@ mburger81

  1. utilisez la méthode this.keyboard.hideKeyboardAccessoryBar(true) fournie par ion-native/keyboard à
    définir la couverture du clavier Page
  2. lorsque le curseur se concentre sur l'entrée, le clavier s'ouvre. puis définissez le ion-content padding-bottom pour afficher le ion-footer

Mon anglais n'est pas très bon, j'espère que vous pouvez comprendre

Est-ce que de toute façon ici utilise le plugin WKWebView qui a été mentionné dans le premier fil? Ou tous ces commentaires concernent-ils UIWebView?

@ jgw96 Je viens de tester le WKWebView sur mon appareil iOS. Vraiment amélioré pour moi. Il semble que le champ de saisie ne reste pas bien au-dessus du clavier comme vous vous en doutez et qu'il est retardé, il apparaît en quelque sorte à la fin. Est-ce un problème connu?

Est-ce uniquement iOS? Je n'ai pas testé sur Android mais ça marche là-bas?

Enregistrement:
https://1drv.ms/v/s!AqSDIyRRHLbYazFGbIPhOGLC4sA

CLI Cordova: 6.4.0
Version du cadre ionique: 3.0.1
Version Ionic CLI: 2.1.14
Version Ionic App Lib: 2.1.7
Version des scripts de l'application ionique: 1.3.0
version ios-deploy: 1.9.1
version ios-sim: 5.0.12
Système d'exploitation: macOS Sierra
Version du nœud: v7.4.0
Version Xcode: Xcode 8.3.2 Build version 8E2002

Salut @manucorporat FYI de mes tests. Voir le post ci-dessus et l'enregistrement. Notre application est essentiellement une application de chat, il serait donc bon de savoir si vous pensez que ce problème peut être résolu.

@ jgw96 @manucorporat pouvez-vous s'il vous plaît commenter l'état de ces tests et quand les correctifs brnach entreront en production? Ou que reste-t-il à faire? Je l'apprécierais vraiment.

@ jgw96 Vous avez peut-être mis à jour ce problème? Il semble avoir manqué le jalon 3.3.0.

Y a-t-il un correctif officiel pour les problèmes de clavier? Il a été difficile de travailler avec depuis Ionic 1 et toujours pas de solution officielle pour quelque chose d'aussi important que le clavier.

@nuvoPoint LoL, le problème du clavier dure depuis près d'un an et

  1. https://github.com/ionic-team/ionic/issues/6228
  2. https://github.com/ionic-team/ionic/issues/5432

Et ils ne font que verrouiller le problème ... LOL ...
Alors .. j'ai abandonné l'ionic à cause du problème du clavier il y a un an, et maintenant, je reviens ici pour voir si le clavier a été réparé, mais comme vous le voyez, ils n'ont pas progressé cette année. :)

Il semble qu'ils ne souhaitent pas avoir de correctif officiel, même s'il s'agit d'un composant de base pour une application simple !! Il perdra tous les développeurs qui souhaitent créer une application de chat. Input Box est un composant de base qui interagit avec l'utilisateur, avec ce foutu problème, nous ne pouvons utiliser IONIC que pour créer des applications d' informations simples . Et c'est peut-être le positionnement de l'ionique ...? LOL. Je ne sais pas.

Et si vous voyez la discussion dans le forum, de nombreux développeurs ont le même problème et la même réponse:
Il n'est pas possible d'utiliser Ionic pour créer une application de chat native simple:

https://forum.ionicframework.com/t/about-to-give-up-with-ionic-3-simple-native-like-chat-page-not-possible/87548

Les gars, le clavier est en cours de travail, et il y a une branche pour cela dans le plugin cordova pour wk si vous voulez le tester.

cordova plugin add https://github.com/driftyco/cordova-plugin-wkwebview-engine.git#keyboard-fixes --save

Voici les correctifs actuels: https://github.com/ionic-team/cordova-plugin-wkwebview-engine/pull/131

Essayez de l'installer et voyez si c'est mieux ou non. L'équipe recherche des commentaires

Édité:

@AmitMY comment voulez-vous que je

J'ai testé le WKWebView sur mon appareil iOS. Vraiment amélioré pour moi.

Problème actuel:
Il semble que le champ de saisie ne reste pas bien au-dessus du clavier comme vous vous en doutez et qu'il est retardé, il apparaît en quelque sorte à la fin. Est-ce un problème connu?

Enregistrement:
https://1drv.ms/v/s!AqSDIyRRHLbYazFGbIPhOGLC4sA

packages globaux:
@ ionique / cli-utils: 1.2.0
CLI Cordova: 7.0.1
CLI ionique: 3.2.0

forfaits locaux:
@ ionic / app-scripts: 1.3.7
@ ionic / cli-plugin-cordova: 1.2.1
@ ionique / cli-plugin-ionique-angulaire: 1.2.0
Plates-formes Cordova: iOS 4.4.0
Cadre ionique: ionique-angulaire 3.0.1

Système:
Nœud: v7.4.0
Système d'exploitation: macOS Sierra
Xcode: Xcode 8.3.2 Build version 8E2002
ios-deploy: 1.9.1
ios-sim: 5.0.12

@jrmcdona Je pense que vous devriez poster vos @manucorporat l'examinera quand il le pourra
Essayez de le garder aussi professionnel que possible, comme - c'est bien que vous ayez une vidéo, mais expliquez également ce qui ne va pas dans la vidéo (afin que nous puissions suivre les problèmes sans regarder les enregistrements à chaque fois)

Vous espérez résoudre le problème des onglets et du clavier ouvert?

@ Floyd1256 Liez-le ici, avec toutes les informations dont vous disposez. L'ensemble de ce fil sera probablement revu à la fin de la semaine prochaine et des correctifs seront apportés en fonction des retours

J'ai besoin d'une fonction de chat dans mon application ionique.
J'ai testé cordova-plugin-wkwebview-engine.git # keyboard-fixes dans mon projet, de grandes améliorations ont été apportées.
Pourtant, il y a encore quelque chose que nous ne pouvons pas faire par rapport à la gestion native du clavier.
Ma référence est la fonction de messagerie sur mon téléphone mais c'est la même chose pour les plus grandes applications de chat bien connues:
Lorsque nous cliquons pour écrire un nouveau message, le clavier apparaît et pousse le texte d'entrée fixe inférieur ET les derniers messages MAIS pas l'en-tête fixe supérieur.
L'animation push est fluide et nous pouvons voir les derniers messages même lorsque nous tapons un nouveau message.
Pour avoir un exemple, il vous suffit d'écrire et d'envoyer un SMS avec n'importe quel téléphone.

Je voudrais avoir le même comportement avec le clavier ionique sur les appareils Android, iOS et Windows.
Sur le clavier ionique actuel, l'animation de poussée est saccadée et le clavier pousse l'entrée fixe inférieure mais couvre les derniers messages (sur tous les appareils).
Pour tester, ajoutez simplement une entrée de texte dans un pied de page ionique et tapez du texte.
Le défi est grand mais les utilisateurs finaux ne peuvent pas accepter un clavier tel quel, l'écart avec un clavier natif est flagrant.
Sinon, merci pour un excellent cadre ionique.

À gauche pour créer une animation lors du redimensionnement et la possibilité de désactiver le redimensionnement lorsque le clavier apparaît vers le haut des onglets n'apparaissaient pas! Ou permettre de désactiver l'apparence des onglets lorsque le clavier est affiché

Disparaît récemment faire défiler sur le côté

J'ai une conception intéressante pour ce problème, en ajoutant une vue Web d'imbrication au-dessus de la vue Web principale. le développeur a donc la possibilité de séparer l'interface utilisateur en 2 couches, une pour le contenu principal et la seconde pour toute interface utilisateur devant être synchronisée avec le clavier.

@ Khalid-Nowaf votre vue principale ne pousse pas vers le haut dans cette conception lorsque le clavier se lève. Donc, dans un scénario de chat ou SMS, vous couvrez tous vos messages. Dans iOS SMS par exemple, les messages sont poussés avec la zone de texte de manière très fluide - de sorte que vous puissiez toujours voir le dernier message envoyé. Ensuite, le clavier ne tombe pas après avoir saisi du texte, il y reste jusqu'à ce que vous continuiez à taper et à quitter. Personnellement, je pense que la conception ionique devrait imiter iOS et Android (même si je ne peux pas parler pour Android car je n'en ai jamais utilisé). Je ne sais rien non plus sur les complexités pour y arriver du point de vue du développement, mais en espérant que cela se rapproche. Vraiment amélioré pour moi avec WKWebView.

@jrmcdona , le principal problème avec le clavier maintenant, est de savoir comment faire défiler le pied de page en douceur avec le clavier. le plugin clavier actuel et la vue Web essayant de s'envoyer des événements, afin qu'ils puissent gérer l'animation et le redimensionnement ..etc, et il est difficile de les synchroniser les uns avec les autres. Parfois, le clavier est plus rapide que l'animation de la vue Web. donc ce que j'essaie d'aborder ici est d'interdire une deuxième vue Web au-dessus de la vue principale. et nativement le clavier le poussera vers le haut, tandis que la vue web principale peut avoir la possibilité de faire défiler ou non "dépendre de ce que veut le développeur" et faire défiler la vue principale n'est plus un problème maintenant je pense. L'application de chat comme est ce qui fait la plupart du problème, car tout est dans une seule couche.

Quelqu'un dans le forum dit qu'un excellent plugin a parfaitement résolu le problème du clavier.
Https://github.com/EddyVerbruggen/cordova-plugin-native-keyboard
Une mauvaise nouvelle est que ce plugin est payant.

Aussi, juste en testant la "branche clavier fixe" d'ionic, il y a toujours un gros problème et une mauvaise expérience utilisateur.

@kitkimwong Wow ça a l'air bien, sauf pour le fait que c'est assez cher (surtout pour le fait que ionic est gratuit). @manucorporat, vous devriez absolument y jeter un œil

Ce plugin est répertorié dans la documentation ionique. Je vais l'essayer aujourd'hui et voir comment ça se passe. 200 $ ne sont pas si chers pour certaines entreprises, je suppose. Deux heures de temps pour les développeurs paieront cela et je suppose que vous pourriez passer des heures à jouer avec le clavier sans le plugin.
http://ionicframework.com/docs/native/native-keyboard/ Ne vous méprenez pas, je préférerais ne pas payer mais je pourrais!

J'ai créé un repo pour tester le clavier, avec ce repo vous pouvez tester

  • application de chat comme
  • formes et beaucoup d'entrées "test ionique E2E"
  • wkwebview pour ios ** nouveau
  • RTL

voici une partie de ma démo



lien de dépôt: https://github.com/Khalid-Nowaf/ionic-keyboard

tout ce que vous avez à faire après le clonage du dépôt
sh ionic cordova run ios --prod ionic cordova run android --prod

7047

Serait-ce une idée d'inclure le champ de saisie réel de manière native comme option pour le clavier? Ensuite, nous ne serions pas dépendants du rendu DOM pas assez rapide, et avoir le stick d'entrée sur le clavier serait plus facile à implémenter.

Le vieil adage "quand on a un marteau, tout ressemble à un clou" me vient à l'esprit; alors peut-être que nous devons aborder le tout différemment.

@larssn c'est ce que fait le plugin de clavier payant. Cela semble donc être une bonne option.

@jrmcdona Ça va peut-être bien oui. Mais préférerait avoir une solution interne qui fonctionne à 100%. Dans le passé, je suis devenu dépendant de plusieurs plugins qui sont tombés en ruine, et leur maintenance était un petit cauchemar.

@larssn ne suggérait pas d'utiliser le plugin. Je suggérais votre idée pour ionic de faire que la conception sonne bien et c'est aussi ce que fait le plugin.

Jusqu'à ce que nous obtenions des commentaires de l'équipe ionique sur les problèmes de clavier actuels, - Si quelqu'un veut tester le plugin payant, j'ai créé un repo ici. Cependant, je ne parviens pas à faire apparaître le clavier pour une raison quelconque. Je dois cliquer sur Basculer en haut à droite pour qu'il apparaisse. Impossible de comprendre pourquoi il n'apparaîtra pas lorsque la page est chargée. Comme la démo.

https://github.com/jrmcdona/keyboard-test

Une solution qui a fonctionné pour moi:

  • Utilisez input place ion-input

@SoldierCorp vous voulez dire dans la branche de test WkWebView ionique fournie? Ou UIWebView?

@jrmcdona Dans le modèle du composant, l'élément html lui-même.

Compte tenu de tous les commentaires et attentes sur ce sujet, pourquoi ne pas penser à fournir
un composant de chat dédié comprenant un clavier et un texte d'entrée Il est trop difficile d'en créer un par des développeurs ordinaires et il serait frustrant d'utiliser un plugin tiers même si cela semble vraiment génial

D'accord avec cela à 100%. Si cela n'est pas réalisable en raison de certaines complexités auxquelles ils ont été confrontés, cela serait également très utile pour nous tous.

@AmitMY @manucorporat Concernant la branche de test WKWebView. Croyez que le clavier ne doit pas se fermer après avoir appuyé sur Envoyer.
Tout comme vous le verriez lors d'une conversation SMS dans iOS. Si le développeur ne souhaite pas ce comportement, il peut appeler la méthode de fermeture du clavier, mais par défaut, elle doit rester ouverte afin que les gens puissent faire vibrer les messages pendant un scénario de discussion sans que le clavier ne rebondisse de haut en bas.

Quel est le statut de cette succursale? Serait-il possible de rendre visibles les dernières nouvelles sur le clavier? @AmitMY @manucorporat @ jgw96

@jrmcdona, il a été fusionné dans master, n'hésitez pas à l'essayer:
[email protected]

Ok! 👍🏼

@manucorporat Dois-je simplement npm installer [email protected] pour obtenir cette version?
J'ai essayé mais ce n'était pas valide. Je ne sais pas comment obtenir cela sauf la version que vous voulez que je teste.

@jrmcdona exécutez npm v ionic-angular versions --json pour voir quelles versions sont publiées

@jrmcdona

npm install ionic-angular<strong i="7">@nightly</strong>

Ok merci @manucorporat . J'ai supprimé la branche de test WKWebView et l'ai rajoutée avec la dernière.
<plugin name="cordova-plugin-wkwebview-engine" spec="^1.1.3" />

Ensuite, j'ai mis à jour Angular vers la version 4.1.3 afin de pouvoir l'installer tous les soirs.

On dirait qu'il n'est pas encore tout à fait prêt pour les heures de grande écoute. La branche de test WKWebView s'est mieux comportée que ce que nous avons actuellement. Avec cette version, la boîte de saisie ne se lève pas du tout. Seul le clavier sans entrée. Dans la branche de test, le clavier montait mais juste un peu retardé. Pas idéal mais maniable.

Quelqu'un a-t-il un repo fonctionnel du clavier qui fonctionne bien?

S'agit-il d'un problème connu, existe-t-il une liste des problèmes connus?
Dois-je enregistrer de nouveaux problèmes?

Voici une vidéo.
https://1drv.ms/v/s!AnyXOztVClZYbfswP -UEtaHEU0I

Voici le code:

<div class="chat-window-container" style="padding-top:20px">
  <div class="chat-window">
    <div class="message-list">

      <chat-message *ngFor="let message of messages | async" [message]="message">
      </chat-message>

    </div>

    <message-input>

      <div style="flex:1;padding-left:5px;">
        <ion-input [(ngModel)]="draftMessage.text" (keydown.enter)="onEnter($event)" autofocus="" placeholder="Type to chat..." maxlength="2000"></ion-input>
      </div>
      <div (click)="onEnter($event)" style="display:table;width:50px;height:100%">
        <ion-icon name="send" color="primary" class="message-send-icon"></ion-icon>
      </div>
    </message-input>
  </div>
</div>

Merci a tous

@jrmcdona oui, toujours pas publié, nous préparons un nouveau plugin de clavier:

  1. Mettez à jour la CLI:
    ''
    npm install -g ionique

2. Make sure you are using ionic-framework nightly or 3.4

3. Make sure you are using the latest WK plugin

4. Remove ionic-keyboard-plugin: **SUPER IMPORTANT STEP!!!!**

5. Install the new keyboard plugin: 
 ```
ionic cordova plugin add https://github.com/ionic-team/cordova-plugin-keyboard --save

PLAISIR! Faites moi savoir comment ça marche pour vous

@manucorporat
La version 3.4 n'est pas encore publiée.

Nightly et les autres versions récemment publiées échouent pour moi comme invalides. Voir la capture d'écran

screen shot 2017-06-14 at 7 27 24 pm

@jrmcdona avez-vous essayé de supprimer node_module et d'exécuter à nouveau npm install? assurez-vous d'utiliser --save en ionic-angular @ tous les soirs.

Cependant, 3.4 sera publié aujourd'hui.

L' interface utilisateur

Je ne savais pas comment importer le clavier dans l'application pour jouer avec les méthodes Afficher / Masquer.
(c'est-à-dire importer {Keyboard} depuis '@ ionic-native / keyboard';)

Il semble que si vous cliquez sur le bouton d'envoi, le clavier se ferme automatiquement (je ne le ferme pas dans le code car je n'ai pas le clavier importé dans l'application pour utiliser les méthodes Keyboard.Show etc.) Sera-t-il possible de conserver le clavier ouvert comme comment fonctionne iOS SMS?

Voici un enregistrement.
https://1drv.ms/v/s!AnyXOztVClZYcY3vYXiXYaAZNdE

Vous vous demandez si vous avez déjà joué avec l'inclusion de l'entrée avec le plugin de clavier lui-même et l'avez-vous stylé en fonction du type d'appareil?

Beau travail Manu!

@manucorporat en effet de grandes améliorations, pourriez-vous ajouter une option pour pousser le contenu (à l'exception de l'en-tête) afin que nous puissions voir les derniers messages lorsque le clavier est ouvert et que le texte d'entrée est fixé en bas?

Quels plug-ins dois-je installer pour que le clavier fonctionne?

@aspidvip Manu le mentionne quelques articles en retour. Je vais le copier ici.

Mettez à jour la CLI:
npm install -g ionique
Assurez-vous que vous utilisez le cadre ionique tous les soirs ou 3.4

Assurez-vous que vous utilisez le dernier plugin WK

Supprimer ionic-keyboard-plugin: ÉTAPE SUPER IMPORTANTE !!!!

Installez le nouveau plugin de clavier:

plugin ionic cordova ajouter https://github.com/ionic-team/cordova-plugin-keyboard --save

Et comment accéder à un nouveau clavier plugin?

C'est bien si le clavier est ajouté en tant qu'enfant dans le div: ~

~ Par exemple, le travail du plugin google maps

Comment progresse le travail avec le clavier?

Travail fantastique @manucorporat . Je viens de passer de 3,2 à 3,5 tous les soirs (@ 3.5.3-201707261447) et cela semble fonctionner comme prévu dans la plupart des formulaires que j'ai dans mon application.

Il ne nous reste plus qu'à publier une démo d'application montrant tout cela fonctionne. S'il y a de l'intérêt, je peux essayer de contribuer pendant le week-end.

Merci pour tout le travail mis dans ce @manucorporat! (Et tous ceux qui l'ont testé aussi).

@ Peege151 Je suis vraiment intéressé par une démo d'application de ceci. J'arrive juste au point d'intégrer un clavier dans mon application pour le chat, je serai donc en mesure de lui faire un test approfondi une fois prêt, et de faire un rapport ici.

@ Peege151 J'adorerais voir une démo d'application!

D'accord, cela peut être un choc, mais je suis toujours sur Ionic 2.2.1 et je ne peux actuellement pas mettre à niveau vers la dernière version car je pense que cela introduira de nouveaux bogues que je ne peux pas me permettre pour le moment.
Ce https://github.com/driftyco/cordova-plugin-wkwebview-engine.git#keyboard -fixes semble fonctionner, mais j'ai peur que l'application ne plante encore sur iOS avec l'erreur "Plus de tâches exécutées alors ont été planifiées" .

Puis-je utiliser https://github.com/driftyco/cordova-plugin-wkwebview-engine.git avec toujours l'Ionic 2.2.1? Une chance?

J'ai donc essayé la dernière version de ce plugin 1.1.3 avec Ionic 2.2.1, suivi les instructions du repo github, ajouté le code ci-dessous et supprimé ionic-plugin-keyboard (j'ai supposé que c'est ce que @manucorporat voulait dire dans son commentaire) - a fait l'installation de npm pour le plugin, construit l'application et l'a essayé.
Sur le simulateur iOS avec la version iOS 10+ et cela a bien fonctionné comme prévu, sans problème et sans plantage. Je dois encore l'essayer sur un vrai téléphone (auparavant, mon application s'est plantée lors de l'utilisation de la solution ici https://stackoverflow.com/questions/36706398/in-ionic-2-how-to-float-an-element-above- le-clavier-quand-le-clavier-montre / 36804830 # 36804830)
Un conseil pour la disparition du clavier, ajoutez-le au bouton
(mousedown)="$event.preventDefault()"

Le config.xml inclus

<feature name="CDVWKWebViewEngine">
  <param name="ios-package" value="CDVWKWebViewEngine"/>
</feature>
<plugin name="cordova-plugin-wkwebview-engine" spec="~1.1.3"/>
<plugin name="cordova-plugin-keyboard" spec="https://github.com/ionic-team/cordova-plugin-keyboard"/>
<allow-navigation href="http://localhost:8080/*"/>

J'ai trois questions, si quelqu'un peut vous aider:
1- Les choses continueront-elles à fonctionner normalement sur Android après avoir supprimé le clavier du plugin ionique?
2- Est-ce que <allow-navigation href="http://localhost:8080/*"/> correct? avec localhost: 8080 ?
3- Dois-je supprimer ce code ci-dessous du config.xml

<feature name="Keyboard">
  <param name="ios-package" onload="true" value="IonicKeyboard"/>
</feature>

Si votre problème est sur Android, cela vous aidera. Dans le fichier ionic config.xml, ajoutez les lignes suivantes dans la balise platform name = "android".

<platform name="android"> 
  <edit-config file="AndroidManifest.xml" mode="merge"    target="/manifest/application/activity"> <activity android:windowSoftInputMode="adjustPan" /></edit-config>
  ...the rest of the android configs...
</platform>

Cela empêchera le clavier de tout pousser vers le haut et de superposer simplement le clavier sur le contenu. Le comportement sera donc le même ou similaire à celui du clavier ios

@Jatapiaro Cela ne fonctionne pas très bien lorsque vous avez une entrée en bas de la vue, le clavier la masquera et vous ne pourrez pas voir ce que vous tapez.

Je ne pense pas vraiment qu'Ionic soit le meilleur endroit pour une application de chat. Je n'ai jamais pu faire les choses correctement et je pense que cela a été une lutte pendant quelques années à partir de tous les messages et commentaires. Juste mon opinion personnelle. S'il y avait un exemple d'application de chat fonctionnant pour ionic sur iOS et Android, cela pourrait vraiment aider les gens.

Oui, en fait, nous avons payé pour ça et c'était plutôt bien! Ce serait la meilleure voie à suivre pour les personnes qui peuvent se le permettre. Dans mon expérience en tout cas.

Quelque part dans le plugin de clavier EddyVerbruggen, Max Lynch avait mentionné de faire de ce plugin une partie du package de chat Ionic. J'ai posé des questions à ce sujet dans ce fil et je l'ai également tweeté. Je n'ai pas reçu de réponse. Je ne sais pas de quoi il s'agissait. Cela fait un moment que je n'ai pas prêté attention, alors peut-être qu'il y a une mise à jour à ce sujet ...

Si je me souviens bien, j'ai vu quelque part sur Twitter, il y a une semaine, qu'Ionic travaille sur une mise à jour / un nouveau plugin de clavier ... si je ne me trompe pas, gardez-le au frais, attendez et voyez

bonjour j'ai un projet IONIC v1, et je découvre que le bouton de retour est parfois invalide, cela me dérange depuis longtemps , j'ai besoin d'aide merci

@miaozhenkun ce repo est pour Ionic v3 +, pour v1 utilisez https://github.com/ionic-team/ionic-v1

@astec Êtes-vous chinois? merci beaucoup

le clavier a un problème avec la barre de texte ionique

<ion-card class="cards " > <div class="relative"> <div class="image_container"> <img class="imageFull" src="http://via.placeholder.com/200x200" /> </div> <ion-row class=" absolute bottom0 "> <ion-item> <ion-textarea placeholder="Message..." > </ion-textarea> </ion-item> </ion-row> </div> </ion-card>

J'utilise la liste de la carte ci-dessus avec le css ci-dessous
.relatif{
position: relative ! importante;
}
.absolu{
position: absolue ! importante;
}
.bottom0 {
bas: 0;
}

lorsque je clique sur zone de texte, cela ouvre le clavier mais ne défile pas dans l'élément, mais lorsque je tape quelque chose, il défile dans la zone de texte.

J'ai observé que le problème n'existe que si nous utilisons la position relative pour tout parent d'ion-textarea.

des solutions workaroud avec position relative?

Salut les gars!
n'importe qui a trouvé une solution à cela.
votre aide est appréciée.

`Paquets cli: (/usr/local/Cellar/node@6/6.12.2/lib/node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

packages globaux:

cordova (Cordova CLI) : 8.0.0

forfaits locaux:

@ionic/app-scripts : 3.1.6
Cordova Platforms  : android 6.3.0 ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

Système:

Android SDK Tools : 26.1.1
Node              : v6.12.2
npm               : 5.5.1 
OS                : macOS Sierra
Xcode             : Xcode 9.2 Build version 9C40b

Variables d'environnement:

ANDROID_HOME : /Users/santhoshgl/Library/Android/sdk

Divers:

backend : legacy`

ajouter à votre bouton de clic (mousedown)="$event.preventDefault(); yourFunction()"

Des nouvelles?

Je pense que vous allez vouloir attendre et utiliser Avocado @mladilav

Nous avons eu un problème avec notre clavier iOS dans les entrées ioniques, en bref, l'entrée n'aura pas de signe d'insertion après le démarrage du clavier, l'utilisateur peut taper correctement dans le champ. J'ai essayé une variété de versions ioniques différentes, la gestion des versions de la vue Web, etc. en vain. Je pense que c'est un problème où si l'entrée d'ions doit être défilée, cela aura des problèmes, si l'entrée d'ions était tout en haut de la page, cela ne semble pas avoir le problème.

J'ai cependant trouvé une chose qui a complètement résolu notre problème: j'ai construit cette application dans Xcode 8.3.3. Toutes les versions précédentes que j'essayais utilisaient Xcode 9.0 avec la dernière version de Xcode 9.3 sortie il y a quelques jours. Le problème avec ce correctif est que je pense qu'Apple pourrait supprimer le formulaire d'applications soumis à partir de Xcode 8 dans un proche avenir. Quelqu'un a d'autres idées?

Pour faire défiler pb, j'ai écrit un hack ici: https://github.com/ionic-team/ionic/issues/10629#issuecomment -395084125

Merci pour le problème! Nous avons déplacé le code source et les problèmes pour Ionic 3 dans un référentiel séparé. Je déplace ce problème vers le référentiel pour Ionic 3. Veuillez suivre ce problème là-bas.

Merci d'utiliser Ionic!

Cette page vous a été utile?
0 / 5 - 0 notes