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