PureBoard
http://forums.purebasic.com/german/

Kugelsicheren Code zum verstecken der Android-Tastatur
http://forums.purebasic.com/german/viewtopic.php?f=33&t=31130
Seite 1 von 1

Autor:  ccode_new [ 16.10.2018 19:37 ]
Betreff des Beitrags:  Kugelsicheren Code zum verstecken der Android-Tastatur

Hallo liebe Leute,

kennt hier jemand eine gut funktionierende JavaScript-Lösung um die Android-Tastatur auszublenden/ einzublenden.

Also wenn man in ein String/Edit - Gadget klickt soll die Android-Tastatur (unter Android - Versteht sich!) nicht angezeigt werden.

Danke!

Autor:  RSBasic [ 16.10.2018 19:45 ]
Betreff des Beitrags:  Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Da ich kein Android-Tablet zum Testen habe, kann ich dir leider nicht direkt helfen.
Bei Google fand ich folgende "Lösung": https://stackoverflow.com/questions/496 ... r-50006197
Es ist direkt nicht möglich, aber durch das Auslösen und Abfragen des Fokus-Events und durch ein Fake-Element könnte man es umgehen.

Autor:  Derren [ 17.10.2018 17:28 ]
Betreff des Beitrags:  Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Wozu ist das Control dann da?
Wenn du es deaktivierst, kann man immer noch den Text darin markieren, aber nichts mehr eingeben. Folglich springt auch die Tastatur nicht auf. Allerdings macht das nur Sinn wenn man manchmal was eingeben können soll und manchmal nicht.
Wenn du nur Text ausgeben willst, dann nimm halt ein Span oder eine Tabelle.

Autor:  ccode_new [ 17.10.2018 17:50 ]
Betreff des Beitrags:  Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Hallo Derren,

ich möchte einfach komplett die Androidtastatur deaktivieren können und bei Bedarf selber wieder aktivieren können.

Unabhängig ob ein String/-Edit-Gadget den Fokus hat oder auch nicht hat.

Das scheint aber nur nativ (z.B per JAVA) möglich zu sein.

Anbei:

Es dauert ja auch immer fast 15 Minuten bis SpiderBasic überhaupt eine Android-App erstellt. (Das ist eigentlich ziemlich uncool.)

Autor:  RSBasic [ 17.10.2018 17:52 ]
Betreff des Beitrags:  Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Du könntest alternativ ein Fake-Input-Element erstellen. Also ein Div mit dem gleichen Design eines Input-Feldes mit einem KeyDown-Handler.
Wenn du sowas als wiederverwendbare Funktion haben möchtest, sag Bescheid.

Autor:  ccode_new [ 17.10.2018 20:08 ]
Betreff des Beitrags:  Re: Kugelsicheren Code zum verstecken der Android-Tastatur

@RSBasic:
Lass mal sein!
Wenn ich nur die Texteingabe in einem String-/Edit-Gadget sperren/aktivieren möchte, kann ich auch einfach:

SetAttribute(Eingabe, "readonly", "readonly")
und
RemoveAttribute(Eingabe, "readonly")

nutzen.

Hier trotzdem mal noch eine kleine SetReadOnly()-Funktion mit kleinem Testcode:
Code:
Global edit0, edit1, btn0, fcolor, bcolor

Procedure SetReadOnly(gid, status) ;Für String-, oder Edit-Gadget
  If status > 0
    ! $(v_gid.div).find("input").attr("readonly", "readonly");
    ! $(v_gid.div).find("textarea").attr("readonly", "readonly");
  ElseIf status <= 0
    ! $(v_gid.div).find("input").removeAttr("readonly");
    ! $(v_gid.div).find("textarea").removeAttr("readonly");
  EndIf
EndProcedure

Procedure.s ReturnValue(gid) ; Stringrückgabe (beim StringGadget) = GetGadgetText(0)
  !return $(v_gid.div).find(".dijitInputInner").val();
EndProcedure

Procedure ChangeValue() ;Testfunktion
  If LCase(ReturnValue(edit0)) = "readonly"
    SetReadOnly(edit1, #True)
    ! $(v_btn0.div).find(".dijitButtonContents").css("background-color", "green");
    ! $(v_btn0.div).find(".dijitButtonContents").css("color", "white");
  ElseIf LCase(ReturnValue(edit0)) = "write"
    SetReadOnly(edit1, #False)
    ! $(v_btn0.div).find(".dijitButtonContents").css("background-color", "red");
    ! $(v_btn0.div).find(".dijitButtonContents").css("color", "black");
  EndIf
EndProcedure

OpenWindow(0,0,0,800,600,"Test",#PB_Window_Background)
StringGadget(0, 10, 10, 300, 30, "Hallo")
EditorGadget(1, 10, 45, 600, 600)
ButtonGadget(2, 320, 10, 30, 30, "Set")

edit0 = GadgetID(0)
edit1 = GadgetID(1)
btn0 = GadgetID(2)
fcolor = RGB(255,255,0)
bcolor = RGB(0,0,0)

BindGadgetEvent(2, @ChangeValue())

;Init (Ein bisschen Styling)
! $(v_edit0.div).find(".dijitTextBox").css("border-radius", "20px");
! $(v_edit0.div).find(".dijitInputInner").val("Gebe ReadOnly oder Write ein.");
! $(v_edit0.div).find(".dijitTextBox").css("color", spider_helper_ColorToHtml(v_fcolor));
! $(v_edit0.div).find(".dijitTextBox").css("background-color", spider_helper_ColorToHtml(v_bcolor));

! $(v_btn0.div).find(".dijitButtonContents").css("border-radius", "50px");
! $(v_btn0.div).find(".dijitButtonNode").css("border-radius", "50px");
! $(v_btn0.div).find(".dijitButtonContents").css("background-color", "red");


Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/