---
title: "PDF form field flags on iOS | Nutrient SDK"
canonical_url: "https://www.nutrient.io/guides/ios/forms/create-edit-and-remove/form-field-flags/"
md_url: "https://www.nutrient.io/guides/ios/forms/create-edit-and-remove/form-field-flags.md"
last_updated: "2026-06-09T10:24:29.154Z"
description: "Flags are sets of Boolean properties on an object. Each form field and form element in a document has flags that define behavior and capabilities."
---

# PDF form field flags on iOS

Flags are sets of Boolean properties on an object. Each _form field_ and _form element_ in a document has flags that define behavior and capabilities. A form field tracks the entered data value. A form element is the visual object shown on a PDF page, and it’s represented by a widget annotation.

## General field flags

The [`isReadOnly`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isreadonly), [`isRequired`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isrequired), and [`isNoExport`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isnoexport) flags are available on all types of form fields: button fields, text fields, choice fields, and signature fields.

- If the [`isReadOnly`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isreadonly) flag is `true`, then the UI won’t allow the form field to be filled or its value to be changed. You can also use the [`isEditable`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/iseditable) property on the form field as a transient property to disable user interaction. In other words, [`isReadOnly`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isreadonly) is persisted in the PDF, while [`isEditable`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/iseditable) isn’t. Note that the [`.readOnly`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation/flag/readonly) and [`.lockedContents`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation/flag/lockedcontents) flags on the form _element_ have no effect.

- The [`isRequired`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isrequired) flag is exposed but only partially supported. The elements of any fields marked as required will be displayed with a red border. However, Nutrient will allow form submission actions to run, even if some required form fields are empty.

- The [`isNoExport`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isnoexport) flag is exposed but not supported.

## Button field flags

The [`isPushButton`](https://www.nutrient.io/api/ios/documentation/pspdfkit/buttonformfield/ispushbutton), [`isCheckBox`](https://www.nutrient.io/api/ios/documentation/pspdfkit/buttonformfield/ischeckbox), and [`isRadioButton`](https://www.nutrient.io/api/ios/documentation/pspdfkit/buttonformfield/isradiobutton) properties can be used to read the type of a button field.

The `NoToggleToOff` and `RadiosInUnison` flags from the PDF reference aren’t exposed or supported.

## Text field flags

The [`isMultiLine`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/ismultiline), [`isPassword`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/ispassword), [`isComb`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/iscomb), and [`doNotScroll`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/donotscroll) flags are available to alter the behavior and appearance of text fields.

The [`isRichText`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/isrichtext), [`doNotSpellCheck`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/donotspellcheck), and [`fileSelect`](https://www.nutrient.io/api/ios/documentation/pspdfkit/textformfield/fileselect) flags are exposed but not supported.

## Choice field flags

The [`isCombo`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/iscombo) and [`isEdit`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/isedit) properties can be used to read the type of a choice field:

- If both [`isCombo`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/iscombo) and [`isEdit`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/isedit) are enabled, then the field is a combo box, which allows picking from a list or entering custom text. In this case, [`isMultiSelect`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/ismultiselect) isn’t supported.

- If only [`isCombo`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/iscombo) is enabled, then the field shows a dropdown list, without the option to enter custom text. In this case, [`isMultiSelect`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/ismultiselect) isn’t supported.

- If [`isCombo`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/iscombo) isn’t enabled, then the field is a list box, which shows a list of options inline on the page. In this case, the [`isMultiSelect`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/ismultiselect) flag may be enabled, but the [`isEdit`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/isedit) flag is ignored.

The [`commitOnSelChange`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/commitonselchange) and [`doNotSpellCheck`](https://www.nutrient.io/api/ios/documentation/pspdfkit/choiceformfield/donotspellcheck) flags are exposed but not supported.

The `Sort` flag from the PDF reference isn’t exposed because the reference states that this flag isn’t intended to be used by PDF readers.

## Form element flags

Since form elements are a type of widget annotation, you can access form element flags using the [`flags`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation/flags) property inherited from [`Annotation`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation). Therefore, the API for working with form element flags is mostly the same as the API for annotation flags. These can be used to make form elements hidden. See our [annotation flags](https://www.nutrient.io/guides/ios/annotations/annotation-flags.md) guide to learn more.

There are some exceptions for forms:

- Nutrient doesn’t provide any UI to edit form elements themselves, such as one for moving or resizing an element. Therefore, the [`.locked`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation/flag/locked) flag has no effect because there’s nothing to lock.

- The [`.readOnly`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation/flag/readonly) and [`.lockedContents`](https://www.nutrient.io/api/ios/documentation/pspdfkit/annotation/flag/lockedcontents) flags are ignored. Instead, to prevent a user from filling in a form, use the [`isReadOnly`](https://www.nutrient.io/api/ios/documentation/pspdfkit/pdfformfield/isreadonly) property of the associated form field.
---

## Related pages

- [Creating fillable PDF forms on iOS](/guides/ios/forms/form-creation.md)
- [Programmatically add signature fields to PDF forms](/guides/ios/forms/create-edit-and-remove/add-signature-field.md)
- [How to disable PDF form editing on iOS devices](/guides/ios/forms/create-edit-and-remove/disable-editing.md)
- [PDF form field editor on iOS](/guides/ios/forms/create-edit-and-remove/edit-fields.md)
- [Form object model on iOS](/guides/ios/forms/create-edit-and-remove/form-object-model.md)

