Android Keyboard Activation Issue

andrew at midwestcoastmedia.com andrew at midwestcoastmedia.com
Thu Jan 12 18:00:56 EST 2017


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-developer at xpertassist.com>
> To: "'How to use LiveCode'" <use-livecode at lists.runrev.com>
> Subject: RE: Android Keyboard Activation Issue
> Message-ID: <03CD51D6F3F24623868445DE2D2AF03D at 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-bounces at lists.runrev.com] On Behalf
> Of Andrew Bell via use-livecode
> Sent: Thursday, January 12, 2017 10:48 AM
> To: use-livecode at lists.runrev.com
> Cc: andrew at 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" <dpierce at xpertassist.com>
>> To: "'Daniel Pierce via use-livecode'" <use-livecode at lists.runrev.com>
>> Subject: Android Keyboard Activation Issue
>> Message-ID:
>>
>> <0101015990c6b871-5fd4abdc-5e55-49b8-9a80-9c172ffe6fee-000000 at 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
>
>






More information about the use-livecode mailing list