Class
MobileUIControl
Description
Control is the base class for most mobile UI controls.
Properties
Name |
Type |
Read-Only |
Shared |
|---|---|---|---|
✓ |
|||
✓ |
|||
✓ |
|||
✓ |
|||
MobileUIControl |
✓ |
||
✓ |
|||
✓ |
Methods
Name |
Parameters |
Returns |
Shared |
|---|---|---|---|
constraint As iOSLayoutConstraint, name As String = "" |
|||
name As String |
|||
index As Integer |
MobileUIControl |
||
constraint As iOSLayoutConstraint |
|||
name As String |
|||
child As MobileUIControl |
|||
Events
Name |
Parameters |
Returns |
|---|---|---|
g As Graphics |
||
Constants
These constants are designed to be used with the MobileUIControl to show icons at the Navigator and Library.
For a LibraryIcon aim for 48x48, but note that these will scale depending on the Library settings. Currently we don't provide a way to specify all the acceptable sizes, i.e. 16x16, 32x32, 48x48. For a NavigatorIcon 16x16 is sufficient.
Name
Description
NavigatorIcon
This constant is used to override the icon of your control in the Navigator. Using the WebSDKIconConverter, place the Base64 icon data into the value of this constant.
LibraryIcon
This constant is used to override the icon of your control in the Library. Using the WebSDKIconConverter, place the Base64 icon data into the value of this constant.
Property descriptions
MobileUIControl.AccessibilityHint
AccessibilityHint As String
The accessibility hint is a longer description that is read aloud when VoiceOver is enabled.
Me.AccessibilityHint = "Click to calculate the value and display the next screen."Important
This property is not currently supported for Android.
MobileUIControl.AccessibilityLabel
AccessibilityLabel As String
The accessibility label of of a control is a short name that is read aloud when VoiceOver is enabled.
Me.AccessibilityLabel = "Calculate the value."
MobileUIControl.ControlCount
ControlCount As Integer
The number of child controls in the control.
This property is read-only.
Important
This property is supported for iOS only.
MobileUIControl.Enabled
Enabled As Boolean
Indicates whether the control is enabled or disabled.
Disable the button:
Button1.Enabled = False
MobileUIControl.Height
Height As Integer
The height of the control.
This property is read-only on iOS.
MobileUIControl.Left
Left As Integer
The left position of the control.
This property is read-only on iOS.
MobileUIControl.LockBottom
LockBottom As Boolean
Determines whether the bottom edge of the control should stay at a set distance from the bottom edge of the parent control, if there is one, or the owning screen.
Important
This property is not currently supported for iOS. Use constraints instead.
This property can be set in the control's Inspector. The following example sets it in code.
Me.LockBottom = True
MobileUIControl.LockLeft
LockLeft As Boolean
Determines whether the left edge of the control should stay at a set distance from the left edge of the parent control, if there is one, or the owning screen.
LockLeft and Locktop default to True when you add a new control to a screen. Existing controls will be altered only if LockRight and/or LockBottom are not set. LockLeft has no effect unless LockRight is True.
Important
This property is not currently supported for iOS. Use constraints instead.
This property can be set in the control's Inspector. The following example sets it in code.
Me.LockLeft = True
MobileUIControl.LockRight
LockRight As Boolean
Determines whether the right edge of the control should stay at a set distance from the right edge of the parent control, if there is one, or the owning screen.
Important
This property is not currently supported for iOS. Use constraints instead.
This property can be set in the control's Inspector. The following example sets it in code.
Me.LockRight = True
MobileUIControl.LockTop
LockTop As Boolean
Determines whether the top edge of the control should stay at a set distance from the top edge of the parent control, if there is one, or the owning screen.
LockTop and LockLeft default to True when you add a control to a screen. Existing controls will be altered only if LockRight and/or LockBottom are not set. LockTop has no effect unless LockBottom is True.
Important
This property is not currently supported for iOS. Use constraints instead.
This property can be set in the control's Inspector. The following example sets it in code.
Me.LockTop = True
MobileUIControl.Name
Name As String
The name of the control.
This property is read-only.
MobileUIControl.Parent
Parent As MobileUIControl
The parent (sometimes called a "Super") class of the control.
This property is read-only.
MobileUIControl.TintColor
TintColor As ColorGroup
Changes a control's tint color.
Important
This is supported for iOS only.
On iOS, the following controls support TintColor:
Enum
Description
ProgressBar
The area indicating the value of the control will be drawn in the TintColor.
Slider
The area indicating the value of the control will be drawn in the TintColor.
TextArea
The cursor and text highlight color will be drawn in the TintColor.
TextField
The cursor and text highlight color will be drawn in the TintColor.
MobileUIControl.Top
Top As Integer
The top position of the control.
This property is read-only on iOS.
MobileUIControl.Visible
Visible As Boolean
Indicates whether the control is visible.
Make a button invisible:
Button1.Visible = False
MobileUIControl.Width
Width As Integer
The width of the control.
This property is read-only on iOS.
Method descriptions
MobileUIControl.AddConstraint
AddConstraint(constraint As iOSLayoutConstraint, name As String = "")
Adds a constraint to the control. The optional name parameter can be used to remove a constraint that was added via code.
This constraint is used by child controls that have been added to this control.
Important
This is supported for iOS only.
MobileUIControl.AddControl
AddControl(child As MobileUIControl, isBeingAdded As Boolean = False)
Adds a child control to the control. When the value of isBeingAdded is True, the Opening event is triggered for the child control being added.
Important
This is supported for iOS only.
MobileUIControl.ClearFocus
ClearFocus
Removes the focus from the control.
TextField1.ClearFocus
MobileUIControl.Constraint
Constraint(name As String) As iOSLayoutConstraint
Gets a reference to a named constraint so that you can modify its settings in code.
Important
This is supported for iOS only.
Change an existing (and named) constraint of a control on the Screen:
' "TAWidth" is a width constraint for a TextField that has been given ' a name in the auto-layout Inspector properties. Var c As iOSLayoutConstraint = Self.Constraint("TAWidth") c.Offset = 200
MobileUIControl.ControlAt
ControlAt(index As Integer) As MobileUIControl
Gets the child control at the specified index.
Important
This is supported for iOS only.
MobileUIControl.Controls
Controls As Iterable
Allows you to iterate through all the controls that have been added to this control.
Important
This is supported for iOS only.
MobileUIControl.Handle
Handle As Ptr
The handle to the underlying native OS control.
MobileUIControl.Refresh
Refresh
Marks the control so that it will be redrawn during the next event loop.
Call Refresh to force a Canvas to redraw itself:
Canvas1.Refresh
MobileUIControl.RemoveConstraint
RemoveConstraint(constraint As iOSLayoutConstraint)
Removes a constraint from the control.
Important
This is supported for iOS only.
RemoveConstraint(name As String)
Removes the constraint with the name passed from the Screen.
Important
This is supported for iOS only.
MobileUIControl.RemoveControl
RemoveControl(child As MobileUIControl)
Removes the control from the control.
Important
This is supported for iOS only.
MobileUIControl.SetFocus
SetFocus
Sets the focus to the control.
TextField1.SetFocus
Event descriptions
MobileUIControl.Closing
Closing
Called when the control's layout is closing.
MobileUIControl.DrawControlInLayoutEditor
DrawControlInLayoutEditor(g As Graphics)
This event allows you to draw a preview of your control in the Layout Editor, similar to how the control will look like in at runtime. As this code will run as a script in the IDE, if it doesn't compile for any reason, you will see what happened in the Messages pane.
This event fires whenever your control needs to be drawn in the Layout Editor.
There is no need to re-open the project or restart the IDE, in order to see changes you make to the code in this event.
For more information of how this works, see Drawing Your Control.
MobileUIControl.Opening
Opening
Called when the control's layout is opening.
This is where you typically put initialization code.
This example in the Opening event of a label sets its text to "Hello":
Me.Text = "Hello"
Drawing Your Control
Mobile Controls in 2026r1 and above have the ability to draw themselves in the layout editor using the same techniques that you might use to draw a control in the Paint event of a canvas. We developed a specialized XojoScript API 2 compatible Graphics context which allows you to draw just as you would in the Paint event of a canvas object. The difference here is that you also have access to the Properties and Constants of your class.
For the purposes of drawing controls in the Layout Editor, you will need to implement the DrawControlInLayoutEditor event (you should implement it even if you're not using it, just so your end-users don't see the event). You can put just about any API 2 graphics drawing code into this event and have it render in the Layout editor. If the code you have placed in the event can't compile or runs into a runtime issue, an amber warning icon will be drawn on your control and the errors will be sent to the Messages panel.
Here's an example of how you would draw a red oval within the bounds of the control:
g.DrawingColor = &cFF0000
g.DrawOval(0, 0, g.Width, g.Height)
In addition to the standard drawing controls, there are also some methods for accessing the properties and constants in your control.
Property Methods
BooleanProperty(Name as String) as Boolean
Gets the current value of a Boolean property of your control.
ColorProperty(name As String) As Color
Gets the current value of a Color property of your control.
DoubleProperty(name As String) As Double
Gets the current value of a Double property of your control.
IntegerProperty(name As String) As Integer
Gets the current value of an Integer property of your control.
PictureProperty(name As String) As Picture
Gets the current value of a Picture property of your control.
StringProperty(name As String) As String
Gets the current value of a String property of your control.
Constant Methods
ConstantValue(name As String) As String
Gets the value of a constant in your control as a String.
You can use the ConstantValue of a string stored in a constant, such as "kDescription".:
Var s As String = ConstantValue("kDescription") g.DrawText(s, 25, 25)
PictureConstant(name As String) As Picture
Gets the value of a constant in your control as a Picture.
You can use PictureConstant with the Base64 value (without the type header) of a picture stored in a constant, such as "kIcon":
Var icon As Picture = PictureConstant("kIcon") g.DrawPicture(icon, 0, 0)
Color Methods
ColorGroup.NamedColor(name As String) As Color
When running on a platform that supports named colors (only macOS at the time of this writing), this method returns the named OS.
Note
Color names are case sensitive, so the macOS secondary label color should be "secondaryLabelColor".
TextColor As Color
Returns the current text color of the platform that the IDE is running on.
FillColor As Color
Returns the current fill color of the platform that the IDE is running on.
IsDarkMode As Boolean
Returns True if the system is running in dark mode (only macOS at the time of this writing).
Font Methods
FontCount As Integer
Returns the number of fonts available on the system.
FontAt(index As Integer) As String
Returns the name of the font at the specified index.
Notes
You cannot instantiate MobileUIControl directly.
MobileUIControl cannot be subclassed on Android.
Compatibility
Project Types |
Mobile |
Operating Systems |
All |
See also
MobileControl parent class; MobileScreen, iOSSplitView, iOSTabBar