# Titanium.UI.AlertDialog

An alert dialog is a modal view that includes an optional title, a message and buttons, positioned in the middle of the display.

Availability
0.8
0.8
9.2.0

# Overview

Android iOS Windows
Android iOS Windows

An alert dialog is created using Titanium.UI.createAlertDialog or <AlertDialog> Alloy element.

Although this dialog always appears in the middle of the display (not touching the edges), other aspects of its aesthetics and the way the user interacts with it are different for each platform, as described below.

# Android

On Android, the default alert dialog displays text information, via a title and message, without any buttons. As the user can use the system hardware back button to dismiss it, a button is optional.

Buttons are shown if the buttonNames property is defined, and are rendered horizontally below the message.

To create a custom layout, a view may be added and, in turn, a hierarchy of views added to that child view.

# iOS

On iOS, the default alert dialog displays text information, via a title and message, with a single button to allow it to be dismissed.

Buttons are defined using the buttonNames property and are rendered vertically below the message. Alert dialogs are automatically cancelled when the application is paused/suspended. This behavior can be avoided by setting persistent property on alert dialog to be true.

The style property can be used to allow the user to enter plain text, obscured text or login identifier and password. Entered values can be captured with listening cancel event.

Starting at Titanium SDK 5.1.0, you can also specify the placeholder, keyboardType and returnKeyType properties when using the alert dialog style Titanium.UI.iOS.AlertDialogStyle.PLAIN_TEXT_INPUT or Titanium.UI.iOS.AlertDialogStyle.SECURE_TEXT_INPUT. When using the alert dialog style Titanium.UI.iOS.AlertDialogStyle.LOGIN_AND_PASSWORD_INPUT, you can specify the loginPlaceholder, loginKeyboardType and loginReturnKeyType properties for the login field, as well as the passwordPlaceholder, passwordKeyboardType and passwordReturnKeyType properties for the password field.

# Global Alias

A global method alert() is aliased to this object, and can be invoked with a single message. For example

alert('this is a message');

This will generate an alert with a title of "Alert" and an "OK" button.

# Caveats

Multiple alerts should not be shown at once.

The title and ok properties cannot be changed while the alert dialog is being displayed. On Android only, you can change the message property while the alert dialog is being displayed.

# Examples

# Single-button Alert Dialog (using alias)

Create a single-button alert dialog using the global alert() alias.

var win = Ti.UI.createWindow({
  title: 'Click window to test',
  backgroundColor: 'white'
});

win.addEventListener('click', function(e) {
  alert('The file has been deleted');
});
win.open();

# Single-button Alert Dialog (standard)

Create a single-button alert dialog, without explicitly defining it using the buttonNames property, which is invoked when the app window is clicked.

var win = Ti.UI.createWindow({
  title: 'Click window to test',
  backgroundColor: 'white'
});

win.addEventListener('click', function(e) {
  var dialog = Ti.UI.createAlertDialog({
    message: 'The file has been deleted',
    ok: 'Okay',
    title: 'File Deleted'
  });
  dialog.show();
});
win.open();

# Three-button Alert Dialog

Create a three-button alert dialog, which is invoked when the app window is clicked. Output a message to the log when the cancel button is clicked.

var win = Ti.UI.createWindow({
  title: 'Click window to test',
  backgroundColor: 'white'
});
win.addEventListener('click', function(e) {
  var dialog = Ti.UI.createAlertDialog({
    cancel: 1,
    buttonNames: ['Confirm', 'Cancel', 'Help'],
    message: 'Would you like to delete the file?',
    title: 'Delete'
  });
  dialog.addEventListener('click', function(e) {
    if (e.index === e.source.cancel) {
      Ti.API.info('The cancel button was clicked');
    }
    Ti.API.info('e.cancel: ' + e.cancel);
    Ti.API.info('e.source.cancel: ' + e.source.cancel);
    Ti.API.info('e.index: ' + e.index);
  });
  dialog.show();
});
win.open();

# Alert Dialog with Plain Text Input

Create an alert dialog and allow the user enter plain text, which is invoked when the app window is clicked. Output entered text value to the log when the OK button is clicked.

var win = Ti.UI.createWindow({
  title: 'Click window to test'
});
win.addEventListener('click', function(e) {
  var dialog = Ti.UI.createAlertDialog({
    title: 'Enter text',
    style: Ti.UI.iOS.AlertDialogStyle.PLAIN_TEXT_INPUT,
    buttonNames: ['OK']
  });
  dialog.addEventListener('click', function(e) {
    Ti.API.info('e.text: ' + e.text);
  });
  dialog.show();
});
win.open();

# Alloy XML Markup

Previous three-button alert dialog example as an Alloy view.

alertdialog.xml:

<Alloy>
    <Window id="win" onClick="showDialog" title="Click window to test" backgroundColor="white"
        exitOnClose="true" fullscreen="false" >

        <AlertDialog id="dialog" onClick="doClick" title="Delete"
            message="Would you like to delete the file?" cancel="1">

            <!-- The ButtonNames tag sets the buttonNames property. -->
            <ButtonNames>
                <ButtonName>Confirm</ButtonName>
                <ButtonName>Cancel</ButtonName>
                <ButtonName>Help</ButtonName>
            </ButtonNames>
        </AlertDialog>
    </Window>
</Alloy>

alertdialog.js:

function showDialog() {
    $.dialog.show();
}

function doClick(e) {
    Ti.API.info('e.text: ' + e.text);
}

$.win.open();

# Properties

# androidView CREATION ONLY

Availability
0.8
androidView :Titanium.UI.View

View to load inside the message area, to create a custom layout.

In an Alloy application you can specify this property with either an <AndroidView/> or <View/> element inside the <AlertDialog/> element, for example:

<Alloy>
    <AlertDialog onClick="doClick" title="Delete"
        message="Would you like to delete the file?" cancel="1">

        <!--  Add View or AndroidView for the androidView property  -->
        <View platform="android">
            <Label color="red" text="Warning!  This change is permanent and you cannot undo it!" />
        </View>

        <ButtonNames>
            <ButtonName>Confirm</ButtonName>
            <ButtonName>Cancel</ButtonName>
        </ButtonNames>
    </AlertDialog>
</Alloy>

# buttonClickRequired

Availability
7.5.0
buttonClickRequired :Boolean

Setting this to true requires the end-user to click a dialog button to close the dialog.

Set to true to prevent the dialog from being dismissed via back navigation or tapping outside of the dialog. This requires the end-user to click on one of the dialog buttons provided by property buttonNames. Note that if the dialog does not have any buttons, then the dialog can only be closed programmatically via the hide() method.

Default: false on Android


# buttonNames CREATION ONLY

Availability
0.8
0.8
9.2.0
buttonNames :Array<String>

Name of each button to create.

On iOS, a button will automatically be created if none are explicitly defined, because without it users would be unable to dismiss the dialog. Conversely, a dialog with no buttons may be created on Android, as the hardware back button may be used instead.

A maximum of 3 buttons is supported on Android.

Alloy applications can specify this property with a <ButtonNames> element containing one or more <ButtonName> elements (see example).

<Alloy>
    <AlertDialog id="dialog" onClick="doClick" title="Decide!" message="Do you really want to do that?" cancel="1">
        <ButtonNames>
            <ButtonName>Confirm</ButtonName>
            <ButtonName>Cancel</ButtonName>
            <ButtonName>Help</ButtonName>
        </ButtonNames>
    </AlertDialog>
</Alloy>

Default: No buttons (Android), Single "OK" button (iOS)


# cancel

Availability
0.8
0.8
9.2.0
cancel :Number

Index to define the cancel button.

On iOS, set to -1 to disable the cancel option.

Default: undefined (Android), -1 (iOS)


# canceledOnTouchOutside

Availability
6.0.0
canceledOnTouchOutside :Boolean

When this is set to true, the dialog is canceled when touched outside the window's bounds.

Default: true on Android


# destructive

Availability
3.5.0
9.2.0
destructive :Number

Index to define the destructive button.

Setting this property to -1 disables this option.

Default: -1


# hintText

Availability
5.4.0
9.2.0
hintText :String

Hint text of the text field inside the dialog.

Note that this property is only available if dialog style property is defined as PLAIN_TEXT_INPUT or SECURE_TEXT_INPUT.


# hinttextid

Availability
6.2.0
9.2.0
hinttextid :String

Key identifying a string from the locale file to use for the hintText property.

Only one of hintText or hinttextid should be specified.


# keyboardAppearance

Availability
5.2.0
9.2.0
keyboardAppearance :Number

Keyboard appearance to be displayed when the text field inside the dialog is focused.

Note that this property is only available if dialog style property is defined as PLAIN_TEXT_INPUT or SECURE_TEXT_INPUT.

Default: Titanium.UI.KEYBOARD_APPEARANCE_DEFAULT


# loginHintText

Availability
5.4.0
9.2.0
loginHintText :String

Hint text of the login text field inside the dialog.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.


# loginhinttextid

Availability
6.2.0
9.2.0
loginhinttextid :String

Key identifying a string from the locale file to use for the loginHintText property.

Only one of loginHintText or loginhinttextid should be specified.


# loginKeyboardType

Availability
5.1.0
5.1.0
9.2.0
loginKeyboardType :Number

Keyboard type to display when this text field inside the dialog is focused.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.

Default: Titanium.UI.KEYBOARD_DEFAULT


# loginPlaceholder DEPRECATED

Availability
5.1.0
9.2.0
loginPlaceholder :String

DEPRECATED SINCE 5.4.0

Use loginHintText instead.

Placeholder of the login text field inside the dialog.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.


# loginReturnKeyType

Availability
5.1.0
5.1.0
9.2.0
loginReturnKeyType :Number

Specifies the text to display on the keyboard Return key when this field is focused.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.

Default: Titanium.UI.RETURNKEY_NEXT


# loginValue

Availability
6.1.0
9.2.0
loginValue :String

Value of the login text field inside the dialog.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.


# message

Availability
0.8
0.8
9.2.0
message :String

Dialog message.


# messageid

Availability
0.8
0.8
9.2.0
messageid :String

Key identifying a string in the locale file to use for the message text.


# ok

Availability
0.8
0.8
9.2.0
ok :String

Text for the OK button.

This property is useful when only one button is required, as it negates the need to define the buttonNames property. If buttonNames is defined, this property is ignored.


# okid

Availability
0.8
9.2.0
okid :String

Key identifying a string in the locale file to use for the ok text.

If buttonNames is defined, this property is ignored.


# passwordHintText

Availability
5.4.0
9.2.0
passwordHintText :String

Hint text of the password text field inside the dialog.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.


# passwordhinttextid

Availability
6.2.0
9.2.0
passwordhinttextid :String

Key identifying a string from the locale file to use for the passwordHintText property.

Only one of passwordHintText or hinttextid should be specified.


# passwordKeyboardType

Availability
5.1.0
5.1.0
9.2.0
passwordKeyboardType :Number

Keyboard type to display when this text field inside the dialog is focused.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.

Default: Titanium.UI.KEYBOARD_DEFAULT


# passwordPlaceholder DEPRECATED

Availability
5.1.0
9.2.0
passwordPlaceholder :String

DEPRECATED SINCE 5.4.0

Use passwordHintText instead.

Placeholder of the password text field inside the dialog.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.


# passwordReturnKeyType

Availability
5.1.0
5.1.0
9.2.0
passwordReturnKeyType :Number

Specifies the text to display on the keyboard Return key when this field is focused.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.

Default: Titanium.UI.RETURNKEY_DONE


# passwordValue

Availability
6.1.0
9.2.0
passwordValue :String

Value of the password text field inside the dialog.

Note that this property is only available if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.


# persistent

Availability
3.0.0
3.0.0
9.2.0
persistent :Boolean

Boolean value indicating if the alert dialog should only be cancelled by user gesture or by hide method.

This property is useful to ensure that the alert dialog will not be ignored by the user when the application is paused/suspended.

Default: false on iOS, true on Android


# placeholder DEPRECATED

Availability
5.1.0
9.2.0
placeholder :String

DEPRECATED SINCE 5.4.0

Use hintText instead.

Placeholder of the text field inside the dialog.

Note that this property is only available if dialog style property is defined as PLAIN_TEXT_INPUT or SECURE_TEXT_INPUT.


# preferred

Availability
6.0.0
9.2.0
preferred :Number

Index to define the preferred button.

When you specify a preferred action, the alert dialog highlights the text of that action to give it emphasis. (If the alert also contains a cancel button, the preferred action receives the highlighting instead of the cancel button.) If the iOS device is connected to a physical keyboard, pressing the Return key triggers the preferred action.

Note that this property is only available on iOS 9 or above.

Default: -1


# returnKeyType

Availability
5.1.0
9.2.0
returnKeyType :Number

Specifies the text to display on the keyboard Return key when this field is focused.

Note that this property is only available if dialog style property is defined as PLAIN_TEXT_INPUT or SECURE_TEXT_INPUT.

Default: Titanium.UI.RETURNKEY_DEFAULT


# style

Availability
3.0.0
9.2.0
style :Number

The style for the alert dialog.

Style of the alert dialog, specified using one of the constants from Titanium.UI.iOS.AlertDialogStyle. Using styles other than default one can break your dialog layout if more than two buttons used. All styles can handle up to two buttons comfortably, except for default style can handle up to six buttons when title and message is empty or not given. Note that this property is only available on iOS SDK 5 or above.

Default: Titanium.UI.iOS.AlertDialogStyle.DEFAULT


# tintColor

Availability
6.2.0
9.2.0
tintColor :String | Titanium.UI.Color

The tint-color of the dialog.

This property is a direct correspondant of the tintColor property of UIView on iOS. For a dialog, it will tint the color of it's buttons. For information about color values, see the "Colors" section of Titanium.UI.

Default: null


# title

Availability
0.8
0.8
9.2.0
title :String

Title of the dialog.

If not set, a dialog with no title bar will be created.


# titleid

Availability
0.8
0.8
9.2.0
titleid :String

Key identifying a string in the locale file to use for the title text.


# value

Availability
6.1.0
9.2.0
value :String

Value of the text field inside the dialog.

Note that this property is only available if dialog style property is defined as PLAIN_TEXT_INPUT or SECURE_TEXT_INPUT.

# Methods

# hide

Availability
0.9
0.9
9.2.0
hide([options]) void

Hides this dialog.

Parameters

Name Type Description
options AnimatedOptions

Animation options for Android only. Since SDK 5.1.0 and used only on Android 5.0+

Determines whether to enable a circular reveal animation. Note that the default here is equivalent to passing in { animated: false }

Returns

Type
void

# show

Availability
0.9
0.9
9.2.0
show([options]) void

Shows this dialog.

Parameters

Name Type Description
options AnimatedOptions

Animation options for Android only. Since SDK 5.1.0 and only used on Android 5.0+

Determines whether to enable a circular reveal animation. Note that the default here is equivalent to passing in { animated: false }

Returns

Type
void

# Events

# click

Availability
0.9
0.9
9.2.0

Fired when a button in the dialog is clicked.

There is a subtle difference between singletap and click events.

A singletap event is generated when the user taps the screen briefly without moving their finger. This gesture will also generate a click event.

However, a click event can also be generated when the user touches, moves their finger, and then removes it from the screen.

On Android, a click event can also be generated by a trackball click.

Properties

Name Type Description
cancel Boolean | Number

Boolean type on Android; Number on iOS.

On Android, indicates whether the cancel button was clicked, in which case returns true.

On iOS, the value of the cancel property is returned, if defined, or -1 otherwise. Also note that the cancel button may not be used on the iPad, because iOS will internally decide whether or not to show it in the current context (e.g. in a popover).

See the Three-button Alert Dialog example for a cross-platform workaround for this parity issue.

index Number

Index of the button that was clicked.

login String

Value of login field if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.

password String

Value of password field if dialog style property is defined as LOGIN_AND_PASSWORD_INPUT.

text String

Value of text field if dialog style property is defined as PLAIN_TEXT_INPUT or SECURE_TEXT_INPUT.

source Object

Source object that fired the event.

type String

Name of the event fired.

bubbles Boolean

True if the event will try to bubble up if possible.

cancelBubble Boolean

Set to true to stop the event from bubbling.