Not sure why yours would be working different. I abbreviated much of my card script for list purposes, but I actually create 2 mobileControl objects that appear right after each other on the card using nearly identical code: inputCreateTSM and inputCreateEmail are both called from preOpenScript. inputCreateTSM has the focus as it appears first visually.

I also seem to have some legacy code (commented out) for "onInputFocus" that I likely got from here but don't know how it (or if) it even does anything: http://lessons.livecode.com/m/4069/l/29112-how-do-i-use-native-text-controls-on-mobile

on inputFocus
# set the focus to the native text input
mobileControlDo "TSMinput", "focus"
end inputFocus

--Andrew Bell

------------------------------

Message: 9
Date: Thu, 12 Jan 2017 11:41:07 -0600
From: "Livecode XAC" <lc-develo...@xpertassist.com>
To: "'How to use LiveCode'" <use-livecode@lists.runrev.com>
Subject: RE: Android Keyboard Activation Issue
Message-ID: <03CD51D6F3F24623868445DE2D2AF03D@NetCentral>
Content-Type: text/plain;       charset="us-ascii"

Andrew,

I'm doing the same type of thing, but because I have multiple input fields
on the card, I send the inputCreateTSM when the user selects the field.

Here is the function that I'm using to create the Native Control when the
field is selected.

<CONTROL>
on inputCreatorWide pName, pFld, pContent, pKeyboardType, pAutoCap,
pAutoCorrect, pReturn, pDataDetect

   if environment() is not "mobile" then exit inputCreatorWide

   put the uOS of this stack into tOsType

   if tOsType = "android" then
      get inputCleanUp()
   end if

   if pFld contains "stack" then   -- removed the stack part of the field
identifier
      put wordOffset("stack",pFld) into tWord
      put word 1 to (tWord -2) of pFld into pFld
   end if

   get setInputFieldName( pFld )  -- Save the active Input Field

   get moveToVisibleArea( pFld )    -- Make sure the field is within the
visible area of the display.

   put the rect of pFld into tSize
   put the height of pFld into tHeight
   put the width of pFld into tWidth

   if tOsType = "android" then
      set the itemdel to ","
      add (tHeight/2) to item 4 of tSize -- Increase the field size
      if tWidth < 50 then
         add (100 - tWidth) to item 3 of tSize
      end if
   end if

   mobileControlCreate "input", pName
   mobileControlSet pName, "rect", tSize -- standard for all controls
   mobileControlSet pName, "visible", "True"  -- standard for all controls
   mobileControlSet pName, "text", pContent

   if tOsType = "ios" then
      mobileControlSet pName, "alpha", "255"
      mobileControlSet pName, "backgroundColor", "240,248,255,255"
   end if

   -- Font Size
       if tHeight >60 then
         mobileControlSet pName, "fontSize", 20
      else if tHeight > 50 AND tHeight <= 60 then
         mobileControlSet pName, "fontSize", 21
      else if tHeight > 40 AND tHeight <= 50 then
         mobileControlSet pName, "fontSize", 17
      else
         mobileControlSet pName, "fontSize", 14
      end if

   mobileControlSet pName, "textAlign", "left"

   if pKeyboardType is not Empty then
      if tOsType = "ios" AND pKeyboardType = "number" OR pKeyboardType =
"numeric" then
         mobileControlSet pName, "keyboardType", "numeric"
      else
         mobileControlSet pName, "keyboardType", pKeyboardType
      end if
   else
      mobileControlSet pName, "keyboardType", "default"
   end if

   if pReturn is not Empty then
      mobileControlSet pName, "returnKeyType", pReturn
   else
      mobileControlSet pName, "returnKeyType", "default"
   end if

   if pAutoCap is not Empty then
      mobileControlSet pName, "autoCapitalizationType", pAutoCap
   else
      mobileControlSet pName, "autoCapitalizationType", "none"
   end if

   if pAutoCorrect is not Empty then
      mobileControlSet pName, "autoCorrectionType", pAutoCorrect
   else
      mobileControlSet pName, "autoCorrectionType", "default"
   end if

   -- Set the field parameters for iOS

   if tOsType = "ios" then
      mobileControlSet pName, "font", "arial"
      mobileControlSet pName, "autoFit", true
      mobileControlSet pName, "minimumFontSize", "14"
      mobileControlSet pName, "autoClear", false
      mobileControlSet pName, "borderStyle", "line"
      mobileControlSet pName, "manageReturnKey", false
      mobileControlSet pName, "keyboardStyle", "default"
      mobileControlSet pName, "clearButtonMode", "unless editing"
   end if

   -- Focus on the Control
   mobileControlDo pName, "focus"             -- actually focus on the field
so the keyboard pops up

end inputCreatorWide
<END CONTORL>

Mine is more complex, but for some reason it will not bring up the Keyboard
on Android, but does on iOS.
Is the same behavior you are seeing?

Thanks for the response....
Dan

-----Original Message-----
From: use-livecode [mailto:use-livecode-boun...@lists.runrev.com] On Behalf
Of Andrew Bell via use-livecode
Sent: Thursday, January 12, 2017 10:48 AM
To: use-livecode@lists.runrev.com
Cc: and...@midwestcoastmedia.com
Subject: Re: Android Keyboard Activation Issue

Here is a card script I'm currently using that seems to work in an
iOS/Android app I have now:

on preOpenCard
       inputCreateTsm
end preOpenCard

on inputCreateTSM
    put the rect of graphic "tsmRectangle" into tThisRect
    # do some math to visually accommodate a roundedRect with innerShadow
    add 15 to item 1 of tThisRect
    subtract 10 from item 3 of tThisRect
    mobileControlCreate "input", "TSMinput"
    mobileControlSet "TSMinput", "rect", tThisRect
    mobileControlSet "TSMinput", "text", line 1 of gCurrentPrefs
    mobileControlSet "TSMinput", "keyboardType", "number"
    mobileControlSet "TSMinput", "fontSize", 21
    mobileControlSet "TSMinput", "fontName", "Roboto Light" -- iOS only
    mobileControlSet "TSMinput", "textAlign", "center"
    mobileControlSet "TSMinput", "visible", true
    # make sure the field has focus, which activates the keyboard
    mobileControlDo "TSMinput", "focus"
end inputCreateTSM


on closeCard
    # delete the native text input
    mobileControlDelete "TSMinput"
end closeCard



Date: Thu, 12 Jan 2017 03:44:19 +0000
From: "Daniel Pierce" <dpie...@xpertassist.com>
To: "'Daniel Pierce via use-livecode'" <use-livecode@lists.runrev.com>
Subject: Android Keyboard Activation Issue
Message-ID:

<0101015990c6b871-5fd4abdc-5e55-49b8-9a80-9c172ffe6fee-000000@us-west-
2.amazonses.com>

Content-Type: text/plain;       charset="us-ascii"

List,

I have developed a cross platform mobile app for iOS and Android using
LiveCode and it is working OK, but I continue to get a common
complaint from Android users that when they select a field the
keyboard does not activate like on other apps.

This is not an issue on iOS because a when you create the Native Text
Box, you can send the command mobileControlDo <id> "focus" and the
keyboard is activated with a single touch to the text entry field.

Android doesn't support this capability so the users needs to touch
the field to activate the Native Text Box and then touch it again to
bring up the keyboard.

Has anyone found a way to bring up the virtual keyboard when the
Native Text Box has been created????

Thanks for your advice.
Dan





_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to