Texteingabe beim Smartphone funktioniert nicht

Hier könnt ihr alle Fragen zu SpiderBasic austauschen.
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Texteingabe beim Smartphone funktioniert nicht

Beitrag von stevie1401 »

Bei folgendem Code klappt die Texteingabe mit Smartphones nicht. Oder zumindest sehr oft nicht.
Immer, wenn man auf das Eingabefeld klickt, geht kurz die Handytastatur an, verschwindet aber sofort wieder.
Es würde dann immer funktionieren, wenn die Texteingabebox über der Handytastatur ist, aber das ist natürlich etwas ungünstig.
Was mache ich falsch?

Testen könnt ihr es hier:
http://www.doko-lounge.de/chattest.html


Und hier der Code:

Code: Alles auswählen


EnableExplicit

Global xres,yres,browser.s,smartphoneflg


Declare.s GetBrowserName()
Declare DesktopFeststellen()
Declare Eingabefenster()


Enumeration
  #testwindow
  #chatbox
  #chateingabe
  #chatsendenbutton
EndEnumeration





browser=GetBrowserName()
Debug browser
If FindString(LCase(browser),"mobile")>0
  smartphoneflg=1  
EndIf

DesktopFeststellen()
Eingabefenster()


Procedure.s GetBrowserName()
  ! return platform.name;
EndProcedure



Procedure DesktopFeststellen()
  
  Protected  width,height,wd ,teiler.f,zoom
  Protected.s browser
  
  !document.body.style.zoom = 1 / window.devicePixelRatio * 100 + "%"
  !v_width=document.body.clientWidth;
  !v_height=document.body.clientHeight;
  !v_r=window.devicePixelRatio
  
  Teiler=height/400
  
  
  If smartphoneflg=1 ;Smartphone
    If teiler>1
      !document.body.style.zoom = v_teiler / window.devicePixelRatio * 100 + "%"
    Else
      !document.body.style.zoom = 1 / window.devicePixelRatio * 100 + "%"
    EndIf
    !v_width=document.body.clientWidth;
    !v_height=document.body.clientHeight;
    
  EndIf
  
  xres=width
  yres=height
  
  
  
EndProcedure



Procedure Eingabefenster()
  
  Protected ChatHeight,c,ChatBreite,x,y,w,h
  OpenWindow(#TestWindow, 0, 0, xres,yres, "",#PB_Window_BorderLess)
  AddKeyboardShortcut(#TestWindow, #PB_Shortcut_Return, 2)
  chatbreite=200
  chatheight=yres-200
  
  x=10
  y=10
  TextGadget(#chatbox,x,y,ChatBreite,chatheight,"",#PB_Text_Border)
  
  
  
  x=GadgetX(#chatbox)
  y=GadgetY(#chatbox)+GadgetHeight(#chatbox)+20
  
  
  
  y=GadgetY(#chatbox):  h=GadgetHeight(#chatbox)
  ;Chateingabe
  StringGadget(#ChatEingabe, x, y+chatheight+10, GadgetWidth(#chatbox)-80, 30, "")
  x=GadgetX(#ChatEingabe)+GadgetWidth(#ChatEingabe)+5
  y=GadgetY(#ChatEingabe)
  ButtonGadget(#ChatSendenButton,x,y,60,30,"Senden")
  
  
  
  
  
  
EndProcedure






Ich programmiere nur noch mit Linux.
Linux Mint 21.x
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Texteingabe beim Smartphone funktioniert nicht

Beitrag von ccode_new »

Hallo stevie1401,

an deinem Problem verzweifle auch ich mit SpiderBasic.

Das ist die quick and dirty - Variante:

Code: Alles auswählen

EnableExplicit

Global xres,yres,browser.s,smartphoneflg

Declare.s GetBrowserName()
Declare DesktopFeststellen()
Declare Eingabefenster()

Enumeration
  #testwindow
  #chatbox
  #chateingabe
  #chatsendenbutton
EndEnumeration

browser=GetBrowserName()
Debug browser
If FindString(LCase(browser),"mobile")>0
  smartphoneflg=1 
EndIf

DesktopFeststellen()
Eingabefenster()

Procedure.s GetBrowserName()
  ! return platform.name;
EndProcedure

Procedure DesktopFeststellen()
  
  Protected  width,height,wd ,teiler.f,zoom
  Protected.s browser
  
  !document.body.style.zoom = 1 / window.devicePixelRatio * 100 + "%"
  !v_width=document.body.clientWidth;
  !v_height=document.body.clientHeight;
  !v_r=window.devicePixelRatio
  
  Teiler=height/400
  
  If smartphoneflg=1 ;Smartphone
    If teiler>1
      !document.body.style.zoom = v_teiler / window.devicePixelRatio * 100 + "%"
    Else
      !document.body.style.zoom = 1 / window.devicePixelRatio * 100 + "%"
    EndIf
    !v_width=document.body.clientWidth;
    !v_height=document.body.clientHeight;
    
  EndIf
  
  xres=width
  yres=height
  
EndProcedure

Procedure in()
  ResizeWindow(#TestWindow, 0, -GadgetY(#chateingabe), #PB_Ignore, #PB_Ignore)
EndProcedure

Procedure out()
  ResizeWindow(#TestWindow, 0, 0, #PB_Ignore, #PB_Ignore)
EndProcedure

Procedure Eingabefenster()
  
  Protected ChatHeight,c,ChatBreite,x,y,w,h
  OpenWindow(#TestWindow, 0, 0, xres,yres, "",#PB_Window_BorderLess)
  AddKeyboardShortcut(#TestWindow, #PB_Shortcut_Return, 2)
  chatbreite=200
  chatheight=yres-200
  
  x=10
  y=10
  TextGadget(#chatbox,x,y,ChatBreite,chatheight,"",#PB_Text_Border)
  
  x=GadgetX(#chatbox)
  y=GadgetY(#chatbox)+GadgetHeight(#chatbox)+20
  
  y=GadgetY(#chatbox):  h=GadgetHeight(#chatbox)
  ;Chateingabe
  StringGadget(#ChatEingabe, x, y+chatheight+10, GadgetWidth(#chatbox)-80, 30, "")
  x=GadgetX(#ChatEingabe)+GadgetWidth(#ChatEingabe)+5
  y=GadgetY(#ChatEingabe)
  ButtonGadget(#ChatSendenButton,x,y,60,30,"Senden")
  
  BindGadgetEvent(#chateingabe, @in(), #PB_EventType_Focus)
  BindGadgetEvent(#chateingabe, @out(), #PB_EventType_LostFocus)
  
EndProcedure
Oder du verwendest normale "input" - Elemente.
Beispiel:

Code: Alles auswählen

Html.s = "<form>" +
         " <input type='date' size='10' id='date' name='date' required pattern='[0-9]{2}\.[0-9]{2}\.[0-9]{4}' />" +
         " <p><input type='text' size='20', id='edit' name='edit'/>"+
         "</form>"

! $("body").append(v_html);

Procedure.s GetHtmlGadgetText(ID.s)
  ! return $("#" + v_id).val();
EndProcedure

Procedure SetHtmlGadgetText(ID.s, Value.s)
  ! $("#" + v_id).val(v_value);
EndProcedure

SetHtmlGadgetText("date", "2019-03-21")

Debug GetHtmlGadgetText("date")

SetHtmlGadgetText("edit", "Dies ist ein Test.")

Debug GetHtmlGadgetText("edit")
Wie das bei den SpiderBasic-Elementen geht weiß ich nicht.
Aber bei einer normalen Input-Box scrollt der Mobile-Browser automatisch.
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
stevie1401
Beiträge: 659
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Texteingabe beim Smartphone funktioniert nicht

Beitrag von stevie1401 »

Alter Schwede, du hast ja wirklich auf alles eine Antwort bzw. Lösung. Hut ab! Und besten Dank!
Ich werde es die nächsten Tage versuchen zu verstehen und testen :)
Guten Rutsch!
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Antworten