stylizacja ekranu przy aktywnej klawiaturze wirtualnej

Najlepiej, aby cały interfejs miał niestandardową stylizację , która jest widoczna na iOS (iTouch / ipad) lub Android odpowiednik z klawiaturą wirtualną. Więcej szczegółów znajdziesz poniżej.

Niestandardowy zestaw reguł CSS, aby były aktywne, gdy klawiatura jest "obecna", jest również akceptowalnym rozwiązaniem.

Dotyczy zarówno androidów, jak i ios, na stronie internetowej (HTML / JavaScript/CSS) Zauważ również, że układ wewnątrz to: "fluid".

Edit: This był bardziej projekt, potem tekst; więc zmiany nie są dezorientujące. Na najniższym poziomie po prostu Pragnę zmiany projektu za pomocą i bez kluczy wirtualnych (być może tylko zmiana tła).

Pytanie, na które, jest to dobry lub zły pomysł na projekt, jest dyskusyjne. Uważam jednak, że to nie ma znaczenia. Dla takiego exploita może mieć zastosowanie więcej niż tekst (np. gry lub media interaktywne).

Stąd bounty: pomimo, że nie potrzebuje już odpowiedź na projekt, nad którym pracowałem (zastosowano alternatywny projekt). Nadal uważam, że odpowiedź na to pytanie może przynieść korzyści.

Domyślne Zachowanie

                       +--------+ 
                       |        |
+------------+       +-+-hidden-+-+   <- ~50% hidden
| +--------+ |       | +--------+ |
| |        | |       | |visible | |
| |        | |   \   | |        | |   <- ~50% visible
| |  100%  | |  ==>  | +--------+ |
| |        | |   /   | |virtual | |
| |        | |       | |  keys  | |
| +--------+ |       | +--------+ |
+------------+       +------------+

Pożądane Zachowanie

+------------+       +------------+   
| +--------+ |       | +--------+ |
| |        | |       | |visible | |   <- 100% visible (example styling)
| |        | |   \   | |        | |      Custom Styling
| |  100%  | |  ==>  | +--------+ |
| |        | |   /   | |virtual | |
| |        | |       | |  keys  | |
| +--------+ |       | +--------+ |
+------------+       +------------+
Author: PicoCreator, 2011-12-19

4 answers

Nie jestem pewien, czy to pożądany efekt?. sprawdź ten link

Http://jsfiddle.net/UHdCw/3/

Update

(1). Zakładając, że jest to strona internetowa i działa w przeglądarce urządzenia. Następnie możemy sprawdzić obecność klawiatury wirtualnej, sprawdzając rozmiar ekranu.

Sprawdź w przeglądarce urządzenia- http://jsfiddle.net/UHdCw/8/show/

Kod:- http://jsfiddle.net/UHdCw/8/

(2). Jeśli budujesz natywną aplikację z HTML5 & Phonegap, będzie inaczej. Ponieważ nie ma bezpośredniego Hooka API do sprawdzania statusu klawiatury, musimy napisać naszą własną wtyczkę w Phonegap.

W Androidzie możesz sprawdzić pokaż / ukryj status klawiatury za pomocą kodu natywnego [sprawdź tutaj ]. i trzeba napisać wtyczkę Phonegap, aby uzyskać te zdarzenia w naszym HTML.

[Phonegap jest przykładem. Myślę, że większość html do natywnych frameworków ma tego rodzaju felicity do hook z natywnym kodem ]

IOS update

Jak powiedziałeś, nie ma zmiany wysokości/pozycji, gdy klawiatura jest obecna. Możemy zrobić jedną rzecz, gdy input uzyska fokus możemy dodać klasę shrink i zmniejszyć rozmiar elementu. Sprawdź następujący link.

Http://jsfiddle.net/UHdCw/28/show/

 19
Author: Praveen Vijayan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:35

Natknąłem się na ten sam problem, to działa dla mnie:

<!-- Android Viewport height fix-->
<script type="text/javascript">
var isAndroid = navigator.userAgent.toLowerCase().indexOf("android") > -1; //&& ua.indexOf("mobile");
if(isAndroid) {
    document.write('<meta name="viewport" content="width=device-width,height='+window.innerHeight+', initial-scale=1.0">');
}
</script> 
 11
Author: benone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-27 07:08:44

Niech JavaScript zastosuje klasę do ciała , gdy element wejściowy ma focus.

$("input, textarea").focus(function(){  $(document.body).addClass('when-keyboard-showing');     });
$("input, textarea").blur( function(){  $(document.body).removeClass('when-keyboard-showing');  });

A następnie użyj @media zapytań, aby określić, czy mobilny Widok:

@media (max-width:550px) { 
    body.when-keyboard-showing .header { height:0; padding:0; }
}

Kombinacja pozwoli Ci stylizować stronę, gdy klawiatura jest włączona, na telefonie komórkowym. Dziękuję.

 8
Author: redolent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-01 09:58:22

Mam dokładnie ten problem. Oto moje rozwiązanie na razie, byłbym wdzięczny, gdyby ktoś mógł przetestować na Apple: http://jsfiddle.net/marcchehab/f2ytsu8z/show (aby zobaczyć kod źródłowy i wszystkie: http://jsfiddle.net/marcchehab/f2ytsu8z )

I wykrywam czy nie ma w następujący sposób: po wczytaniu obliczam zmienną "sumedges", czyli $(window).width () + $(window).wysokość (). Następnie w przypadku $(window).resize () porównuję: jeśli suma $(window).width () + $(window).height() stała się mniejsza od "sumedges", oznacza to, że klawiatura jest wyłączona. To działa tutaj na Chrome na Androida. Możesz łatwo dostosować ten kod, aby robić, co chcesz.

var sumedges = $(window).width() + $(window).height();
$(window).resize(function(){
    if($(window).width() + $(window).height() < sumedges) {
    $("#display").html("keyboard out");
  } else {
    $("#display").html("keyboard in");
  }
});

Używając jQuery, nie znalazłem sposobu, aby wymusić płynne przejście, gdy klikniesz na wejście i wyskoczy klawiatura. Ale {[10] } może uda się oszukać system: w fiddle ustawiłem fałszywe wejście (niebieskie). Po kliknięciu na niego, prawdziwe dane wejściowe pojawią się tuż pod moim wyświetlaczem (żółty) i jest zaznaczony. W ten sposób wszystko wygląda gładko tutaj na Chrome na Androida. Jeszcze raz, byłbym wdzięczny, jeśli moglibyście przetestować.

$("#fakeinput").click(function(){
    $("#realinput").show().children("input").focus();
  $("html,body").scrollTop($("#display").offset().top);
});

$("#realinput input").blur(function(){
    $("#realinput").hide();
});
 0
Author: Marc Chéhab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-26 19:23:44