2015-01-18 8 views
8

Mam modalny sposób wysyłania wiadomości, a żeby uzyskać klawiaturę do wyświetlenia, muszę ustawić ostrość na textarea po uruchomieniu modala.Właściwy sposób na pokazanie modów jonowych z textarea i klawiaturą

HTML

<script id="new-post.html" type="text/ng-template"> 
    <div class="modal"> 
    <form ng-submit="sendPost(post)"> 
     <ion-header-bar class="bar-royal"> 
      <button class="button button-clear button-light" ng-click="closeNewPost()">Cancel</button> 
      <h1 class="title">New Message</h1> 
      <button type="submit" class="button button-clear">Post</button>   
     </ion-header-bar> 
     <ion-content> 

      <div class="list"> 
      <label class="item item-input"> 
       <textarea class="textareas" id="postMessageInput" ng-model="$parent.post.message" placeholder="What do you want to say?" autofocus ></textarea> 
      </label> 
      </div> 
     </ion-content> 
    </form> 
    </div> 

Kontroler:

$ionicModal.fromTemplateUrl('new-post.html', function(modal) { 
    $scope.postModal = modal; 
}, { 
    scope: $scope, 
    focusFirstInput: true 
}); 
$scope.newPost = function() { 
    $scope.postModal.show().then(document.getElementById('postMessageInput').focus());  
}; 

Co się dzieje, że modalna ślizga się najpierw, a następnie wsuwa się klawiatura. Czasami pojawia się migotanie ekranu podczas wyświetlania modalu. Całe doświadczenie wcale nie jest płynne. Czasami tekst jest nawet przesuwany pod nagłówkiem modalnym.

Idealnie chcę, aby modal przesuwał się z klawiaturą już wyrenderowaną w widoku, tak jakby klawiatura była osadzona w modalu. Tak działają inne aplikacje (ios). Czy to możliwe, czy istnieje standardowa metoda pokazywania modalu za pomocą klawiatury i obszaru tekstowego?

+0

Dodam, że gdy klawiatura jest pokazane (tylko dlatego, że ostrość jest ustawiona na textarea), które fokus nie znajduje się już na obszarze tekstowym i przed jego wpisaniem musisz kliknąć obszar tekstu. – lilbiscuit

Odpowiedz

0

Funkcja jonowa keyboard plugin ma funkcję Keyboard.show();. Więc zakładam:

$scope.newPost = function() { 
     cordova.plugins.Keyboard.show(); 
     // set a timeout of 100 here (maybe) 
     $scope.postModal.show().then(document.getElementById('postMessageInput').focus()); 
    }; 

nie testowane.

Uwaga: dotyczy to tylko urządzeń z systemem Android. Ale wydaje mi się, że migotanie pojawia się tylko na tej lękliwej suce, prawda?

Powiązane problemy