Cursor Placement in MobileControl

Ralph DiMola rdimola at evergreeninfo.net
Wed Mar 6 13:13:51 EST 2024


Dan,

Nice... thanks!

Ralph DiMola
IT Director
Evergreen Information Services
rdimola at evergreeninfo.net

-----Original Message-----
From: use-livecode [mailto:use-livecode-bounces at lists.runrev.com] On Behalf
Of Dan Friedman via use-livecode
Sent: Wednesday, March 06, 2024 11:15 AM
To: How to use LiveCode
Cc: Dan Friedman
Subject: Re: Cursor Placement in MobileControl

Panos,

Thank you for the suggestion!   That worked out well!   For anyone
interested, here's the snippet for formatting a phone number as you type in
a mobile native field control:

//this assumes that the mobileControl type for Android is "multiline" and
the mobileSetKeyboardType has been set to "email"

on inputTextChanged
  put mobileControlTarget() into pField
  put mobileControlGet(pField,"text") into pText

  if pField = "phoneNumber" then
    put "" into fText
    put numbersOnly(pText) into pText

    if char 1 of pText = "1" then
      put "" into fText
      mobileControlSet "phoneNumber","text",fText
      androidGoLastChar "phoneNumber",fText
      put fText into dataEntered["phone"]
      exit inputTextChanged
    end if

    if the number of chars in pText < 4 then
      put pText into fText
      mobileControlSet "phoneNumber","text",fText
      androidGoLastChar "phoneNumber",fText
    else
      if (the number of chars in pText > 3) then
        put "(" & char 1 to 3 of pText & ")" into char 1 to 3 of fText
        put " " & char 4 to 6 of pText after fText
      end if
      if the number of chars in pText > 6 then
        put "-" & char 7 to 10 of pText after fText
      end if

      mobileControlSet "phoneNumber","text",fText
      androidGoLastChar "phoneNumber",fText
    end if
  end if
end inputTextChanged

function numbersOnly pNum
  //returns only the numbers in pNum
  put "" into fNum
  repeat for each char c in pNum
    if isNumber(c) then
      put c after fNum
    end if
  end repeat

  return fNum
end numbersOnly

on androidGoLastChar mControl,xText
  if ("Android" is in the platform) then
    mobileControlSet mControl,"selectedRange",(the number of chars in
xText+1,0)
  end if
end androidGoLastChar


Thank you!

Dan Friedman
CEO, ClearVision Technologies, LLC
Voice: 909/484-2052
http://www.clearvisiontech.com


From: use-livecode <use-livecode-bounces at lists.runrev.com> on behalf of
panagiotis merakos via use-livecode <use-livecode at lists.runrev.com>
Date: Tuesday, March 5, 2024 at 9:45 AM
To: How to use LiveCode <use-livecode at lists.runrev.com>
Cc: panagiotis merakos <merakosp at gmail.com>
Subject: Re: Cursor Placement in MobileControl Hello Dan,

I take it you are formatting the text in inputTextChanged?

Unfortunately yes, on Android calling

mobileControlSet "phoneNumber","text", pText

puts the cursor in the beginning of the text:

https://quality.livecode.com/show_bug.cgi?id=24055

RE using the selectedRange with mobile native controls, I think this
property is supported only on multiline input fields. So I suppose you could
make the fields to be multiline and give it a try.

Kind regards,
Panos
--

On Tue, 5 Mar 2024 at 18:53, Dan Friedman via use-livecode <
use-livecode at lists.runrev.com> wrote:

> I am trying to create a field on mobile (iOS and Android) that will 
> format a phone number as your type (client request).  I am able to do 
> this on iOS as the command: mobileControlSet 
> "phoneNumber","text",pText puts the cursor AFTER the text so the user 
> can simply continue typing.  But, on Android, the cursor is placed at the
beginning of the text after the
> mobileControlSet command is called.   Is there a way to set the position
of
> the cursor on a native mobile text field?
>
> I did notice that the Android Native Field widget has a selectedRange 
> property.  Can I use this property on a native Android control?  And, 
> can I set the selectedRange to "16,15" to set the cursor location, not 
> select text?
>
> Why not just use the Android Native Field widget, you ask?   I will if I
> have to. but I prefer to use the native control as it is 
> cross-platform and I don't need to case out for which platform we're 
> on.  You would need to create the control and hide the widget for iOS 
> and show the widget for Android.  I'll also have to case out the 
> setting  and getting of the text as they have different methods.  I'll do
this if I have to, but I'd rather
> have a single code set and not have to manage/update separate methods.   I
> would use the standard LC field, but client wants the standard
> hold->popupMenu->paste command to work.
>
> Any thoughts or ideas?
>
> -Dan
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
_______________________________________________
use-livecode mailing list
use-livecode at lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
use-livecode at lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode




More information about the use-livecode mailing list