Ionic-framework: Tastaturprobleme

Erstellt am 3. Mai 2017  ·  98Kommentare  ·  Quelle: ionic-team/ionic-framework

Ionische Version: (mit "x" ankreuzen)
[] 1.x.
[x] 2.x.
[x] 3.x.

Ich reiche ein ... ein (mit "x" markieren)
[x] Fehlerbericht
[ ] Featureanfrage
[] Supportanfrage => Bitte senden Sie hier keine Supportanfragen. Verwenden Sie einen der folgenden Kanäle: https://forum.ionicframework.com/ oder http://ionicworldwide.herokuapp.com/

Aktuelles Verhalten:

Tastaturen und das Scrollen von Eingaben waren lange Zeit eine Herausforderung für Ionic-Apps und gingen sogar bis zu Ionic V1 zurück. Wir haben uns kürzlich darauf konzentriert, diese Tastaturprobleme zu beseitigen. Die Probleme, von denen wir derzeit glauben, dass sie bei Tastaturen und Eingängen höchste Priorität haben, sind folgende:

  • Eingaben in Warnungen sind manchmal "wackelig"
  • Formulare mit vielen Eingaben weisen manchmal Bildlaufprobleme auf, wenn Eingaben weiter unten auf der Seite fokussiert werden
  • Das Umschalten zwischen Eingaben, Textbereichen und mehr verursacht manchmal "Bouncing" und andere seltsame Probleme mit der Benutzeroberfläche
  • Das Sperren einer Eingabe am unteren Rand einer Ansicht funktioniert unter iOS nicht ordnungsgemäß (die Tastatur deckt die Eingabe ab).

Wir arbeiten derzeit an einem zweigleisigen Ansatz zur Änderung der Logik in dem Framework, das dieses Zeug behandelt (hauptsächlich für Android), sowie an einigen Änderungen am WKWebView-Plugin, um diese Probleme für iOS zu beheben. Wir sind an einem Punkt angelangt, an dem wir einen Zweig des WKWebView-Plugins haben, der die Korrekturen für iOS enthält, und für unsere Community bereit sind, dies zu testen und Feedback zu geben. Wir haben ein Google - Dokument gemacht hier , die Anweisungen hat, wie dies getestet werden kann. Wir würden uns über Feedback zu diesen Korrekturen freuen! Fühlen Sie sich frei, Feedback als Kommentar zu diesem Problem zu geben. Vielen Dank, dass Sie Ionic verwenden!

help wanted v3

Hilfreichster Kommentar

In meinem Fall führt das Hinzufügen von AppModule unter Import zu einer relativ besseren Benutzererfahrung als die Standardeinstellungen.

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

Alle 98 Kommentare

In meinem Fall führt das Hinzufügen von AppModule unter Import zu einer relativ besseren Benutzererfahrung als die Standardeinstellungen.

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

Gott sei Dank werden endlich Gebete beantwortet

  1. Die Suchleiste innerhalb der Registerkarte schiebt die Registerkarte nach oben.

Wie auf Android testen?
Wir helfen Ihnen gerne weiter für Android oder Desktop. :) :)

Hey @ mburger81 , gute Frage! Es gibt noch keine aktualisierte nächtliche Version von ionic-angle out, aber wenn wir eine veröffentlichen, werde ich dieses Problem mit den Anweisungen aktualisieren, wie Sie es zum Testen auf Android installieren können.

Okay, danke, wir arbeiten an einer Anmeldeseite, auf der wir Probleme mit dem Bildlauf haben.
Ich denke, wir können es überprüfen.

Zu Ihrer Information, bevor wir es testen und für unseren Tester freigeben können, müssen wir den Fehler INVALID VIEWS (glücklich für den Meilenstein) behoben haben, da dies ein aktuelles Problem für uns ist

Verstanden! Können Sie also versuchen, die Eingabe in einem Bereich Ihrer Ansicht zu platzieren, den die Tastatur beim Öffnen nicht abdeckt?

Das ist eine gute Idee. Achten Sie beim Scrollen darauf, dass sich der Cursor nicht hinter der Leiste befindet

Es ist zu beachten, dass der Cursor beim Scrollen den Ionenkopf nicht blockiert hat

Einige iOS-Rückmeldungen von einem unserer Teammitglieder @danbucholtz :

Können wir bei einzelnen Steuerelementen, die normalerweise nicht in einem Formular verwendet werden (z. B. einer Sucheingabe), das Schließen der Tastatur bei "Senden" oder "Eingeben" untersuchen?

Wenn Sie eine Navigationsaktion ausführen, wird die Tastatur automatisch geschlossen, wenn sie geöffnet ist. Wir sollten dieses Verhalten im Hinblick auf Überlagerungen erneut betrachten. Ich kann mir zum Beispiel nicht vorstellen, dass es viele Anwendungsfälle gibt, wenn ein Modal geöffnet und die Tastatur offen gehalten wird. ActionSheet, Alert, Loading, Modal, Popover, Picker und Toast bedeuten den Start einer neuen Aktion (z. B. Auswahl einer Zeit) oder eine Rückmeldung zu einer abgeschlossenen Aktion (Senden oder Validieren eines Formulars oder etwas anderem). Ich denke, es ist sinnvoll, die Tastatur zu schließen, wenn ein Overlay geöffnet wird.

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
}

Dieser Code ist Arbeit (OPEN KYEBOARD)

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

Es ändert die Höhe gut, aber es ist besser, die Animation zu erstellen, wenn sich die Größe ändert

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

Es könnte nützlich sein, die Dokumentation für diese Konfigurationen zu haben, wenn * sie bei der Lösung dieser Tastatur- und Eingabeprobleme helfen können, möglicherweise bis 3.2.0 der Öffentlichkeit zugänglich gemacht wird.

Gibt es eine Lösung für den Fall, dass die Tastatur die Eingabe verbirgt?

Der folgende Code in app.component.ts erzeugte die gewünschten Effekte von Fußzeileneingaben, die sowohl in iOS als auch in Android über der Tastatur blieben. Aus irgendeinem Grund beeinflusst das Überlagerungsverhalten der Statusleiste in Android die Art und Weise, wie die Tastatur Eingabeelemente verbirgt, die unterhalb der Tastaturhöhe positioniert sind.

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.
            .
            .
            .

            }

Es ist zu beachten, dass der Cursor beim Scrollen den Ionenkopf nicht blockiert hat
key2
key1

Gibt es eine Chance, dass # 7047 auch behoben wird?

Wie funktioniert das eigentlich in Browsern? Fügt ionic zusätzliche Funktionen hinzu, die die Eingaben unterbrechen, oder ist dies nur ein herausforderndes Problem bei Eingabefeldern auf Mobilgeräten?

Dies ist meine Lösung - es funktioniert gut.

  1. Setzen Sie hideKeyboardAccessoryBar auf true
this.keyboard.hideKeyboardAccessoryBar(true)
  1. Erstellen Sie eine KeyboardAttachDirective.ts Datei
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. verwenden
<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. Fügen Sie XXXPage.ts einige Methoden hinzu
    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()
    }

perview.gif Link

Vorschau.mov Link

@ lh4111 Großartig! Aber hast du in Android getestet? Es scheint nicht zu funktionieren.

Wir haben das gleiche Problem wie @aspidvip
@ lh4111 kann ich dich fragen, wofür ist deine Lösung? Behebt es das Problem mit der Eingabe unter der Kopfzeile?

@ Kitkimwong Ich habe nicht auf Android getestet, aber ich denke, die Prinzipien sollten ähnlich sein.

@ mburger81

  1. Verwenden Sie die Methode this.keyboard.hideKeyboardAccessoryBar(true) die von ion-native/keyboard bereitgestellt wird
    Tastaturabdeckung einstellen Page
  2. Wenn sich der Cursor auf die Eingabe konzentriert, wird die Tastatur geöffnet. Stellen Sie dann den Padding-Bottom ion-content , um ion-footer

Mein Englisch ist nicht sehr gut, ich hoffe du kannst es verstehen

Verwendet hier überhaupt das WKWebView-Plugin, das im ersten Thread erwähnt wurde? Oder beziehen sich alle diese Kommentare auf UIWebView?

@ jgw96 Ich habe gerade das WKWebView auf meinem iOS-Gerät getestet. Für mich sehr verbessert. Es sieht so aus, als ob das Eingabefeld nicht wie erwartet auf der Tastatur bleibt und verzögert ist. Es wird am Ende angezeigt. Ist das ein bekanntes Problem?

Ist das nur iOS? Ich habe nicht auf Android getestet, aber funktioniert es dort?

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

Cordova CLI: 6.4.0
Ionic Framework Version: 3.0.1
Ionic CLI Version: 2.1.14
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 1.3.0
ios-deploy Version: 1.9.1
ios-sim version: 5.0.12
Betriebssystem: macOS Sierra
Knotenversion: v7.4.0
Xcode-Version: Xcode 8.3.2 Build-Version 8E2002

Hey @manucorporat FYI von meinen Tests. Siehe Beitrag oben und Aufnahme. Unsere App ist im Wesentlichen eine Chat-App. Es wäre also großartig zu wissen, ob Sie der Meinung sind, dass dieses Problem behoben werden kann.

@ jgw96 @manucorporat Kannst du bitte den Status dieses Tests kommentieren und wann die Korrekturen brnach die Produktion erreichen werden? Oder was bleibt noch zu tun? Würde es wirklich schätzen.

@ jgw96 Möglicherweise aktualisieren Sie dieses Problem? Es scheint den Meilenstein von 3.3.0 verfehlt zu haben.

Gibt es jemals eine offizielle Lösung für die Tastaturprobleme? Es war seit Ionic 1 ein Problem, damit zu arbeiten, und es gibt immer noch keine offizielle Lösung für etwas so Wichtiges wie die Tastatur.

@nuvoPoint LoL, das Tastaturproblem besteht seit fast 1,5 Jahren:

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

Und sie sperren nur das Problem .. LOL ...
Also ... ich habe ionic vor einem Jahr wegen des Tastaturproblems aufgegeben. Und jetzt kehre ich hierher zurück, um zu sehen, ob die Tastatur repariert wurde, aber wie Sie sehen, haben sie in diesem einen Jahr keine Fortschritte gemacht. :) :)

Es scheint, dass sie keine offizielle Lösung haben wollen, auch wenn dies eine grundlegende Komponente für eine einfache App ist !! Es werden alle Entwickler verloren gehen, die eine Chat-App erstellen möchten. Das Eingabefeld ist eine grundlegende Komponente, die mit dem Benutzer interagiert. Mit diesem verdammten Problem können wir NUR IONIC verwenden, um einige einfache Informations-APPS zu erstellen . Und vielleicht ist dies die Positionierung von ionischen ...? LOL. Ich weiß es nicht.

Und wenn Sie die Diskussion im Forum sehen, haben viele Entwickler das gleiche Problem und die gleiche Antwort:
Verwenden Sie Ionic, um eine einfache native Chat-App zu erstellen. Dies ist nicht möglich:

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

Leute, an der Tastatur wird gearbeitet, und im Cordova-Plugin für wk gibt es einen Zweig dafür, wenn Sie es testen möchten.

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

Dies sind die aktuellen Korrekturen: https://github.com/ionic-team/cordova-plugin-wkwebview-engine/pull/131

Versuchen Sie es zu installieren und prüfen Sie, ob es besser ist oder nicht. Das Team sucht nach Feedback

Bearbeitet:

@AmitMY Wie soll ich Feedback geben? In diesem Thread?

Testete das WKWebView auf meinem iOS-Gerät. Für mich sehr verbessert.

Aktuelles Thema:
Es sieht so aus, als ob das Eingabefeld nicht wie erwartet auf der Tastatur bleibt und verzögert ist. Es wird am Ende angezeigt. Ist das ein bekanntes Problem?

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

globale Pakete:
@ ionic / cli-utils: 1.2.0
Cordova CLI: 7.0.1
Ionische CLI: 3.2.0

lokale Pakete:
@ ionic / app-scripts: 1.3.7
@ ionic / cli-plugin-cordova: 1.2.1
@ ionic / cli-plugin-ionic-angle: 1.2.0
Cordova-Plattformen: ios 4.4.0
Ionisches Gerüst: Ionenwinkel 3.0.1

System:
Knoten: v7.4.0
Betriebssystem: macOS Sierra
Xcode: Xcode 8.3.2 Build-Version 8E2002
ios-deploy: 1.9.1
ios-sim: 5.0.12

@jrmcdona Ich denke, du solltest hier @ Manucorporat wird es sich ansehen, wenn er kann
Versuchen Sie, es so professionell wie möglich zu halten. Es ist großartig, dass Sie ein Video haben, aber erklären Sie auch, was in dem Video falsch ist (damit wir Probleme verfolgen können, ohne die Aufnahmen jedes Mal anzusehen).

Hoffnungen, das Problem mit den Registerkarten und der Tastatur zu beheben?

@ Floyd1256 Verknüpfe es hier mit allen Informationen, die du hast. Dieser gesamte Thread wird voraussichtlich Ende nächster Woche überprüft, und Korrekturen werden gemäß dem Feedback vorgenommen

Ich benötige eine Chat-Funktion in meiner ionischen App.
Ich habe cordova-plugin-wkwebview-engine.git # Tastaturkorrekturen in meinem Projekt getestet. Es wurden große Verbesserungen vorgenommen.
Im Vergleich zur nativen Tastaturverwaltung gibt es jedoch noch etwas, das wir nicht tun können.
Meine Referenz ist die Nachrichtenfunktion auf meinem Telefon, aber das Gleiche gilt für die größten bekannten Chat-Apps:
Wenn wir klicken, um eine neue Nachricht zu schreiben, wird die Tastatur angezeigt und drückt den unteren festen Eingabetext UND die letzten Nachrichten, ABER nicht den oberen festen Header.
Die Push-Animation ist flüssig und wir können die letzten Nachrichten sehen, auch wenn wir eine neue Nachricht eingeben.
Um ein Beispiel zu haben, schreiben und senden Sie einfach eine SMS mit einem beliebigen Telefon.

Ich möchte das gleiche Verhalten mit der ionischen Tastatur auf Android-, iOS- und Windows-Geräten haben.
Bei der aktuellen ionischen Tastatur ist die Push-Animation ruckartig und die Tastatur drückt den unteren festen Eingang, deckt jedoch die letzten Meldungen ab (auf allen Geräten).
Fügen Sie zum Testen einfach eine Texteingabe in eine ionische Fußzeile ein und geben Sie Text ein.
Die Herausforderung ist groß, aber Endbenutzer können eine Tastatur nicht so akzeptieren, wie sie ist. Die Lücke zu einer nativen Tastatur ist offensichtlich.
Ansonsten danke für das tolle Ionengerüst.

Links zum Erstellen einer Animation beim Ändern der Größe und die Möglichkeit, das Ändern der Größe zu deaktivieren, wenn die Tastatur nach oben zeigt, wurden nicht angezeigt! Oder machen Sie es möglich, das Erscheinungsbild von Registerkarten zu deaktivieren, wenn die Tastatur angezeigt wird

Vor kurzem verschwindet Bildlauf seitwärts

Ich habe ein interessantes Design für dieses Problem, indem ich über der Hauptwebansicht eine verschachtelte Webansicht hinzufüge. Daher hat der Entwickler die Möglichkeit, die Benutzeroberfläche in zwei Ebenen zu unterteilen, eine für den Hauptinhalt und die zweite für jede Benutzeroberfläche, die mit der Tastatur synchronisiert werden musste.

@ Khalid-Nowaf Ihre Hauptansicht wird in diesem Design nicht nach oben gedrückt, wenn die Tastatur angehoben wird. In einem Chat-Szenario oder einer SMS vertuschen Sie also alle Ihre Nachrichten. In iOS-SMS werden die Nachrichten beispielsweise auf sehr reibungslose Weise zusammen mit dem Textfeld nach oben verschoben, sodass Sie immer die zuletzt gesendete Nachricht sehen können. Dann fällt die Tastatur nach der Texteingabe nicht ab, sondern bleibt dort, bis Sie weiter tippen und gehen. Ich persönlich bin der Meinung, dass das ionische Design iOS und Android imitieren sollte (obwohl ich nicht für Android sprechen kann, da ich noch nie eines verwendet habe). Ich weiß auch nichts über die Komplexität, die es aus entwicklungspolitischer Sicht ermöglicht, aber ich hoffe, dass es näher kommt. Mit WKWebView für mich erheblich verbessert.

@jrmcdona , das Hauptproblem bei der Tastatur, besteht darin, wie die Fußzeile mit der Tastatur reibungslos

Jemand im Forum sagt, dass es ein exzellentes Plugin gibt, das das Tastaturproblem perfekt behoben hat.
Https://github.com/EddyVerbruggen/cordova-plugin-native-keyboard
Eine schlechte Nachricht ist, dass dieses Plugin bezahlt wird.

Wenn Sie nur den "festen Tastaturzweig" von ionic testen, gibt es immer noch ein großes Problem und eine schlechte Benutzererfahrung.

@kitkimwong Wow, das sieht gut aus, bis auf die Tatsache, dass es ziemlich teuer ist (besonders für die Tatsache, dass Ionen frei sind). @manucorporat das

Dieses Plugin ist in den ionischen Dokumenten aufgeführt. Ich werde es heute ausprobieren und sehen, wie es geht. 200 Dollar sind für manche Unternehmen nicht allzu teuer, denke ich. Zwei Stunden Entwicklerzeit werden sich dafür auszahlen, und ich vermute, Sie könnten Stunden damit verbringen, ohne das Plugin mit der Tastatur herumzuspielen.
http://ionicframework.com/docs/native/native-keyboard/ Versteh mich nicht falsch, würde lieber nicht bezahlen, aber ich könnte!

Ich habe ein Repo erstellt, um die Tastatur zu testen. Mit diesem Repo können Sie testen

  • Chat-App wie
  • Formen und viele Eingaben "Form ionischer E2E-Test"
  • wkwebview für ios ** neu
  • RTL

Hier ist ein Teil meiner Demo



Repo-Link: https://github.com/Khalid-Nowaf/ionic-keyboard

Alles, was Sie tun müssen, nachdem Sie das Repo geklont haben
sh ionic cordova run ios --prod ionic cordova run android --prod

7047

Könnte es eine Idee sein, das eigentliche Eingabefeld nativ als Option für die Tastatur einzuschließen? Dann wären wir nicht darauf angewiesen, dass das DOM-Rendering nicht schnell genug ist, und es wäre einfacher, den Eingabe-Stick auf der Tastatur zu haben.

Das alte Sprichwort "Wenn Sie einen Hammer haben, sieht alles aus wie ein Nagel" kommt mir in den Sinn; Vielleicht müssen wir das Ganze anders angehen.

@larssn das macht das kostenpflichtige Tastatur-Plugin. Es scheint also eine gute Option zu sein.

@jrmcdona Könnte ja in

@larssn schlug nicht vor, das Plugin zu verwenden. Hat Ihre Idee für ionic vorgeschlagen, dieses Design zu machen, klingt gut und es ist auch das, was das Plugin macht.

Bis wir vom ionic-Team ein Feedback zu den aktuellen Tastaturproblemen erhalten, - Wenn jemand das kostenpflichtige Plugin testen möchte, habe ich hier ein Repo erstellt. Aus irgendeinem Grund kann ich die Tastatur jedoch zunächst nicht anzeigen. Ich muss oben rechts auf Umschalten klicken, damit es angezeigt wird. Ich kann nicht herausfinden, warum es beim Laden der Seite nicht angezeigt wird. Wie die Demo.

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

Eine Lösung, die für mich funktioniert hat:

  • Verwenden Sie stattdessen input ion-input

@SoldierCorp meinst du im WkWebView Testzweig ionisch vorgesehen? Oder UIWebView?

@jrmcdona In der Vorlage der Komponente das HTML-Element selbst.

In Anbetracht aller Kommentare und Erwartungen zu diesem Thema, warum nicht überlegen, zu liefern
eine dedizierte Chat-Komponente mit Tastatur und Eingabetext? Es ist zu schwierig, eines von gewöhnlichen Entwicklern zu erstellen, und es wäre frustrierend, ein Plugin eines Drittanbieters zu verwenden, selbst wenn es wirklich großartig zu sein scheint

Stimmen Sie dem zu 100% zu. Wenn es aufgrund bestimmter Komplexitäten, mit denen sie konfrontiert sind, nicht erreichbar ist, wäre dies auch für uns alle sehr hilfreich, dies zu wissen.

@AmitMY @manucorporat In Bezug auf den WKWebView-Testzweig. Glauben Sie, dass sich die Tastatur nicht schließen sollte, nachdem Sie auf Senden geklickt haben.
Genau wie Sie es während einer SMS-Konversation in iOS sehen würden. Wenn der Entwickler dieses Verhalten nicht möchte, kann er die Methode zum Schließen der Tastatur aufrufen. Standardmäßig sollte sie jedoch geöffnet bleiben, damit die Benutzer während eines Chat-Szenarios Nachrichten rasseln können, ohne dass die Tastatur auf und ab springt.

Wie ist der Status dieser Niederlassung? Wäre es möglich, die neuesten Nachrichten über die Tastatur sichtbar zu machen? @AmitMY @manucorporat @ jgw96

@jrmcdona es wurde in master zusammengeführt. Fühlen Sie sich frei, es zu versuchen:
[email protected]

Ok! 👍🏼

@manucorporat Installiere ich einfach npm [email protected] , um diesen Build zu erhalten?
Ich habe das versucht, aber es war ungültig. Ich bin mir nicht sicher, wie ich das bekommen soll, außer Build, den ich testen soll.

@jrmcdona Führen Sie npm v ionic-angular versions --json zu sehen, welche Versionen veröffentlicht werden

@jrmcdona

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

Ok danke @manucorporat . Ich habe den WKWebView-Testzweig entfernt und ihn mit dem neuesten hinzugefügt.
<plugin name="cordova-plugin-wkwebview-engine" spec="^1.1.3" />

Dann habe ich Angular auf 4.1.3 aktualisiert, damit ich es jede Nacht installieren kann.

Sieht so aus, als wäre es noch nicht ganz fertig für die Hauptsendezeit. Der WKWebView-Testzweig hat sich besser verhalten als jetzt. Bei dieser Version steigt das Eingabefeld überhaupt nicht an. Nur die Tastatur ohne Eingabe. Im Testzweig würde die Tastatur ansteigen, aber nur ein wenig verzögert. Nicht ideal, aber funktionsfähig.

Hat jemand ein funktionierendes Repo der Tastatur, das gut funktioniert?

Ist dies ein bekanntes Problem, gibt es eine Liste bekannter Probleme?
Sollte ich neue Probleme protokollieren?

Hier ist ein Video.
https://1drv.ms/v/s!AnyXOztVClZYbfswP -UEtaHEU0I

Hier ist 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>

Vielen Dank an alle

@jrmcdona ja, noch nicht veröffentlicht, wir bereiten ein neues Tastatur-Plugin vor:

  1. Aktualisieren Sie die CLI:
    `` `
    npm install -g ionic

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

BITTE! Lass mich wissen, wie es bei dir funktioniert

@ Manucorporat
Version 3.4 ist noch nicht veröffentlicht.

Nightly und die anderen kürzlich veröffentlichten Versionen sind für mich ungültig. Siehe Screenshot

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

@jrmcdona Haben Sie versucht, node_module zu entfernen und npm install erneut auszuführen? Stellen Sie sicher, dass Sie --save in ionic- angle

3.4 wird jedoch heute veröffentlicht.

@manucorporat UI sieht hier ziemlich gut aus! Das Eingabefeld befindet sich oben auf der Tastatur. Möglicherweise eine sehr milde Trennung von Eingang und Tastatur, sodass Sie leicht erkennen können, dass es sich nicht um eine schöne Einheit handelt. Aber enorm verbessert!

Ich war mir nicht sicher, wie ich die Tastatur in die App importieren sollte, um mit den Show / Hide-Methoden zu spielen.
(dh {Keyboard} von '@ ionic-native / keyboard' importieren;)

Es sieht so aus, als würde die Tastatur automatisch geschlossen, wenn Sie auf die Schaltfläche "Senden" klicken (ich schließe sie nicht im Code, da ich die Tastatur nicht in die App importiert habe, um die Methoden "Keyboard.Show" usw. zu verwenden.) Ist es möglich, die zu behalten? Tastatur offen wie iOS SMS funktioniert?

Hier ist eine Aufnahme.
https://1drv.ms/v/s!AnyXOztVClZYcY3vYXiXYaAZNdE

Frage mich, ob Sie jemals damit gespielt haben, den Eingang mit dem Tastatur-Plugin selbst einzuschließen, und ob er entsprechend dem Gerätetyp gestaltet wurde?

Gute Arbeit Manu!

@manucorporat in der Tat große Verbesserungen, könnten Sie eine Option hinzufügen, um den Inhalt zu pushen (Header ausgenommen), so dass wir die letzten Meldungen sehen können, wenn die Tastatur geöffnet ist und der Eingabetext unten fest ist?

Welche Plug-Ins muss ich installieren, damit die Tastatur funktioniert?

@aspidvip Manu erwähnt es ein paar Beiträge zurück. Ich werde es hier kopieren.

Aktualisieren Sie die CLI:
npm install -g ionic
Stellen Sie sicher, dass Sie jeden Abend ein ionisches Gerüst verwenden oder 3.4

Stellen Sie sicher, dass Sie das neueste WK-Plugin verwenden

Ionic-Keyboard-Plugin entfernen: SUPER WICHTIGER SCHRITT !!!!

Installieren Sie das neue Tastatur-Plugin:

ionic cordova plugin https://github.com/ionic-team/cordova-plugin-keyboard --save hinzufügen

Und wie greife ich auf eine neue Plugin-Tastatur zu?

Es ist gut, wenn die Tastatur als Kind im div: ~ hinzugefügt wird

~ Zum Beispiel die Arbeit des Plugins Google Maps

Wie ist der Fortschritt bei der Arbeit mit der Tastatur?

Fantastische Arbeit @manucorporat . Ich habe gerade ein Upgrade von 3.2 auf 3.5 pro Nacht durchgeführt (@ 3.5.3-201707261447) und es scheint in den meisten Formen, die ich in meiner App habe, wie beabsichtigt zu funktionieren.

Jetzt müssen wir nur noch eine App-Demo veröffentlichen, die all diese Funktionen zeigt. Bei Interesse kann ich versuchen, über das Wochenende einen Beitrag zu leisten.

Vielen Dank für die ganze Arbeit in diesem @manucorporat! (Und alle, die es auch getestet haben).

@ Peege151 Ich bin definitiv an einer App-Demo interessiert. Ich bin gerade dabei, eine Tastatur für den Chat in meine App zu integrieren, damit ich sie, wenn sie fertig ist, gründlich testen und hier Bericht erstatten kann.

@ Peege151 Ich würde gerne eine App-Demo sehen!

Okay, das mag ein Schock sein, aber ich bin immer noch auf Ionic 2.2.1 und kann derzeit nicht auf die neueste Version aktualisieren, da ich denke, dass dadurch neue Fehler eingeführt werden, die ich mir im Moment nicht leisten kann.
Diese https://github.com/driftyco/cordova-plugin-wkwebview-engine.git#keyboard-fixes scheinen zu funktionieren, aber ich befürchte, dass die App unter iOS immer noch mit dem Fehler "Weitere ausgeführte Aufgaben wurden geplant" abstürzt. .

Kann ich https://github.com/driftyco/cordova-plugin-wkwebview-engine.git mit dem Ionic 2.2.1 verwenden? Irgendeine Chance?

Also habe ich die neueste Version dieses Plugins 1.1.3 mit Ionic 2.2.1 ausprobiert, die Anweisungen im Github-Repo befolgt, den folgenden Code hinzugefügt und die Ionic-Plugin-Tastatur entfernt (ich nahm an, dass @manucorporat dies in seinem Kommentar bedeutet) - habe die npm für das Plugin installiert, die App erstellt und ausprobiert.
Auf iOS Simulator mit iOS Version 10+ und es funktionierte wie erwartet ohne Probleme und ohne Absturz. Ich muss es immer noch auf einem echten Telefon ausprobieren (zuvor stürzte meine App ab, als ich die Lösung hier verwendete: https://stackoverflow.com/questions/36706398/in-ionic-2-how-to-float-an-element-above- die-Tastatur-wenn-die-Tastatur-zeigt / 36804830 # 36804830)
Ein Tipp für das Verschwinden der Tastatur, fügen Sie diesen der Schaltfläche hinzu
(mousedown)="$event.preventDefault()"

Die config.xml enthalten

<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/*"/>

Ich habe drei Fragen, wenn jemand helfen kann:
1- Funktionieren die Dinge unter Android nach dem Entfernen der Ionen-Plugin-Tastatur weiterhin normal?
2- Ist das <allow-navigation href="http://localhost:8080/*"/> richtig? mit localhost: 8080 ?
3- Sollte ich diesen Code unten aus der config.xml entfernen

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

Wenn Ihr Problem auf Android ist, wird Ihnen das helfen. Fügen Sie in der Datei ionic config.xml die folgenden Zeilen in das Tag platform name = "android" ein.

<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>

Dies verhindert, dass die Tastatur alles nach oben drückt, und überlagert den Inhalt einfach mit der Tastatur. Das Verhalten ist also das gleiche oder ein ähnliches wie bei der iOS-Tastatur

@Jatapiaro Es funktioniert nicht ganz gut, wenn Sie eine Eingabe am unteren Rand der Ansicht haben, die Tastatur sie ausblendet und Sie nicht sehen können, was Sie eingeben.

Ich denke nicht wirklich, dass Ionic der beste Ort für eine Chat-Anwendung ist. Ich konnte es nie richtig machen und glaube, dass es seit ein paar Jahren ein Kampf von all den Posts und Kommentaren ist. Nur meine persönliche Meinung. Wenn es eine funktionierende Chat-App für ionic über iOS und Android gäbe, die den Leuten wirklich helfen könnte.

Ja, eigentlich haben wir dafür bezahlt und es war ziemlich gut! Das wäre der beste Weg für Leute, die es sich leisten können. Nach meiner Erfahrung sowieso.

Irgendwo im EddyVerbruggen-Tastatur-Plugin hatte Max Lynch erwähnt, dass dieses Plugin Teil des Ionic-Chat-Pakets sein sollte. Ich habe in diesem Thread danach gefragt und ihn auch getwittert. Ich habe keine Antwort erhalten. Ich bin mir nicht sicher, worum es im Chat-Paket ging. Es ist schon eine Weile her, seit ich aufgepasst habe, also gibt es vielleicht ein Update darüber ...

Wenn ich mich richtig erinnere, habe ich irgendwo auf Twitter gesehen, wie vor einer Woche, dass Ionic an einem Update / einem neuen Tastatur-Plugin arbeitet

Hallo, ich habe ein IONIC-Projekt v1 und stelle fest, dass der Return-Button manchmal ungültig ist. Es hat mich lange Zeit gestört. Ich brauche Hilfe, danke

@miaozhenkun Dieses Repo ist für Ionic v3 +, für v1 verwenden Sie https://github.com/ionic-team/ionic-v1

@astec Bist du Chinese? Vielen Dank

Die Tastatur hat ein Problem mit der Ionentextleiste

<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>

Ich benutze Liste der obigen Karte mit unter CSS
.relativ{
Position: relativ ! wichtig;
}}
.absolut{
Position: absolut ! wichtig;
}}
.bottom0 {
unten: 0;
}}

Wenn ich auf Textbereich klicke, wird die Tastatur geöffnet, aber nicht in das Element gescrollt. Wenn ich jedoch etwas eingebe, wird in den Textbereich gescrollt.

Ich habe beobachtet, dass das Problem nur besteht, wenn wir Positon Relative für einen Elternteil des Ionentextbereichs verwenden.

Workaroud-Lösungen mit Positionsrelativ?

Hallo Leute!
Jeder hat eine Lösung dafür gefunden.
Deine Hilfe wird geschätzt.

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

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

globale Pakete:

cordova (Cordova CLI) : 8.0.0

lokale Pakete:

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

System:

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

Umgebungsvariablen:

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

Sonstiges:

backend : legacy`

Fügen Sie zu Ihrer Klick-Schaltfläche (mousedown)="$event.preventDefault(); yourFunction()"

Irgendwelche Neuigkeiten?

Ich denke, Sie werden warten und Avocado @mladilav verwenden

Wir haben ein Problem mit unserer iOS-Tastatur bei Ioneneingaben. Kurz gesagt, bei der Eingabe wird nach dem Aufrufen der Tastatur kein Caret gerendert. Der Benutzer kann das Feld korrekt eingeben. Ich habe verschiedene ionische Versionen, Webview-Versionen usw. ohne Erfolg ausprobiert. Ich glaube, es ist ein Problem, bei dem Probleme auftreten, wenn der Ioneneingang gescrollt werden muss. Wenn sich der Ioneneingang ganz oben auf der Seite befindet, scheint das Problem nicht zu bestehen.

Ich habe jedoch eine Sache gefunden, die unser Problem vollständig behoben hat: Ich habe diese App in Xcode 8.3.3 erstellt. Alle vorherigen Builds, die ich versucht habe, verwendeten Xcode 9.0 für die neueste Xcode 9.3-Version, die vor ein paar Tagen veröffentlicht wurde. Das Problem mit diesem Fix ist, dass Apple in naher Zukunft möglicherweise Apps fallen lässt, die von Xcode 8 gesendet werden. Hat jemand andere Ideen?

Zum Scrollen von pb habe ich hier einen Hack geschrieben: https://github.com/ionic-team/ionic/issues/10629#issuecomment -395084125

Danke für das Problem! Wir haben den Quellcode und die Probleme für Ionic 3 in ein separates Repository verschoben. Ich verschiebe dieses Problem in das Repository für Ionic 3. Bitte verfolgen Sie dieses Problem dort.

Vielen Dank, dass Sie Ionic verwenden!

Das Problem wurde verschoben zu: https://github.com/ionic-team/ionic-v3/issues/827

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen