Kugelsicheren Code zum verstecken der Android-Tastatur

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Kugelsicheren Code zum verstecken der Android-Tastatur

Beitrag von ccode_new »

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!
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Beitrag von RSBasic »

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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Derren
Beiträge: 557
Registriert: 23.07.2011 02:08

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Beitrag von Derren »

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.
Signatur und so
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Beitrag von ccode_new »

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.)
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Beitrag von RSBasic »

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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Kugelsicheren Code zum verstecken der Android-Tastatur

Beitrag von ccode_new »

@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: Alles auswählen

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");

Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten