2017-02-20 49 views
5

Mam problem z Ionic2 Ostateczne zachowanie podsłuchu na iOS.Ionic2 Przejścia blokowania iOS dotknij lub kliknij przez sekundę

Po przejściu strony dotknięcie lub kliknięcie karty nie działa przez 1-2 sekundy, więc użytkownik musi dwukrotnie dotknąć lub kliknąć (lub poczekać chwilę przed kliknięciem). Próbowałem już użyć karty <a> na karcie, zamiast bezpośrednio dołączać kliknięcie do karty. Próbowałem też (click), (tap), [navpush] i próbowałem dodać do karty tappable.

<ion-content padding class="modules card-background-page"> 
    <ion-card class="module-card" *ngFor="let module of modules"> 
    <a (tap)="tapEvent($event)" (click)="clickEvent($event)" [navPush]="modulePage" [navParams]="{id: module.id}" > 
    <img src="{{module.thumbnail}}"/> 
    <div class="card-content"> 
     <div class="card-title"> 
      <strong>Module {{module.number}}</strong> 
     </div> 
     <div class="card-subtitle"> 
      <strong *ngIf="translate.currentLang!='fr'">{{module.subtitle_en}}</strong> 
      <strong *ngIf="translate.currentLang=='fr'">{{module.subtitle_fr}}</strong> 
     </div> 
    </div> 
    </a> 
    </ion-card> 
</ion-content> 

Na Androidzie działa dobrze.

Po wielu prób i błędów „stałe” ten problem za pomocą android przejścia:

IonicModule.forRoot(MyApp, { 
     pageTransition: 'md-transition' 
    }), 

więc problem wydaje się być przejście iOS. Masz pomysł, jak to naprawić? Ktoś mający ten sam problem? Mam także problemy z przewróceniem się pleców bardzo krótko po przejściu lub zamykaniu bocznego menu. Nie są one jednak tak łatwe do powielenia.

iOS 10.1.1 na iPhone 6S

+0

Czy masz jakieś nowe informacje na temat tego problemu? Wygląda na to, że jonowi autorzy nie rozwiązują tego problemu z fundamendalami - i nie planują tego naprawić :( –

+1

@ KamilKiełczewski Nie jestem pewien, muszę przetestować obecną wersję.Jeśli nie zostanie rozwiązany, użyj tego rozwiązania: Spróbuj użyć '(dotknij)' zamiast '(kliknij)', zawsze ustaw 'tappable' (przynajmniej gdy nie w' 'lub'

Odpowiedz

2

problem wydaje się być rzeczywiste animacja służy do przejścia. Możesz rozwiązać ten problem, dostosowując czas (i łagodzenie) animacji, wykonując naciśnięcie przycisku navCtrl. Robisz to, zapewniając opcjonalny obiekt jako ostatni parametr.

this.navCtrl.push('MyPage', null, { 
    duration: 200, 
    easing: 'cubic-bezier(0.36,0.66,0.9,1)' 
}); 

Wyjaśnienie następująco ...

Oryginalny ustawienie animacji wynosi 500 ms, który jest zbyt długi. Jednak faktyczna animacja wizualna nie wydaje się zajmować tak długo, ponieważ pierwotna animacja jest bardzo płaska w ciągu ostatnich 200-300 ms (co widać na poniższym obrazku). enter image description here

Dlatego też zmiana musi zostać zmieniona.

oryginalny: sześciennych beziera (0.36,0.66, 0,04 1) zmieniono na sześciennych Beziera (0.36,0.66, 0,9, 1)

aby aplikacja Bądź szybki, gdy nawigujesz z powrotem, ta sama animacja musi zostać dodana, gdy przycisk Wstecz jest wciśnięty w widoku. Można to zrobić, zastępując zachowanie przycisku Wstecz na pasku nawigacyjnym.

więc dodać do swojej strony komponentu

@ViewChild(Navbar) navBar: Navbar; 

ionViewDidLoad() { 
    this.setBackButtonAction() 
} 

//Method that overrides the default back button action 
setBackButtonAction() { 
    this.navBar.backButtonClick =() => { 
    this.navCtrl.pop({ 
     duration: 200, 
     easing: 'cubic-bezier(0.36,0.66,0.9,1)' 
    }); 
    } 
} 

Dla każdego budynku źródło (lub chce dostarczyć wniosek do zespołu ciągnącego Ionic). Oryginalne wartości są ustawione w iOS transition.ts i powinny być zmienione tam

const DURATION = 500; 
const EASING = 'cubic-bezier(0.36,0.66,0.04,1)'; 

EDIT: Mam złożyła wniosek do zespołu ciągnącego Ionic https://github.com/ionic-team/ionic/pull/13029

+0

Czy mógłbyś udostępnić link do żądania ściągnięcia? – mpiz

+1

Pewnie. Tutaj możesz https://github.com/ionic-team/ionic/pull/13029 –

+0

To całkowicie sprawia, że ​​przejścia stron są znacznie bardziej efektowne. Ładnie wykonane! Mam nadzieję, że zespół joński uwzględni twoją zmianę. – mpiz