| // Copyright 2017-present the Material Components for iOS authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #import <UIKit/UIKit.h> |
| |
| // TODO(b/151929968): Delete import of delegate headers when client code has been migrated to no |
| // longer import delegates as transitive dependencies. |
| #import "MaterialElevation.h" |
| #import "MDCMultilineTextInputLayoutDelegate.h" |
| #import "MDCTextInput.h" |
| |
| @class MDCIntrinsicHeightTextView; |
| |
| @protocol MDCMultilineTextInputDelegate; |
| @protocol MDCMultilineTextInputLayoutDelegate; |
| |
| API_DEPRECATED_BEGIN( |
| "🕘 Schedule time to migrate. " |
| "Use branded UITextField or UITextView instead: go/material-ios-text-fields/gm2-migration. " |
| "This is go/material-ios-migrations#not-scriptable 🕘", |
| ios(12, 12)) |
| |
| /** |
| Material Design themed mutiline text field (multiline text input). |
| https://www.google.com/design/spec/components/text-fields.html#text-fields-multi-line-text-field |
| */ |
| @interface MDCMultilineTextField |
| : UIView <MDCTextInput, MDCMultilineTextInput, MDCElevatable, MDCElevationOverriding> |
| |
| /** A mirror of the same property that already exists on UITextField, UITextView, and UILabel. */ |
| @property(nonatomic, assign) BOOL adjustsFontForContentSizeCategory; |
| |
| /** |
| Should the text field grow vertically as new lines are added. |
| |
| Default is YES. |
| |
| Note: Inherited from MDCMultilineTextInput protocol. Added here to declare Interface Builder |
| support (IBInspectable). |
| */ |
| @property(nonatomic, assign) IBInspectable BOOL expandsOnOverflow; |
| |
| /** |
| The delegate for changes to preferred content size. |
| |
| If using auto layout, it is not necessary to have a layout delegate. |
| */ |
| @property(nonatomic, nullable, weak) IBOutlet id<MDCMultilineTextInputLayoutDelegate> |
| layoutDelegate; |
| |
| /** An optional delegate for useful methods not included in UITextViewDelegate.*/ |
| @property(nonatomic, nullable, weak) IBOutlet id<MDCMultilineTextInputDelegate> multilineDelegate; |
| |
| /** |
| The text string of the placeholder label. |
| Bringing convenience API found in UITextField to all MDCTextInputs. Maps to the .text of the |
| placeholder label. |
| |
| Note: Inherited from MDCTextInput protocol. Added here to declare Interface Builder support |
| (IBInspectable). |
| Note: The [Design guidance](https://material.io/components/text-fields/#anatomy) changed and treats |
| placeholder as distinct from `label text`. The placeholder-related properties of this class most |
| closely align with the "label text" as described in the guidance. |
| */ |
| @property(nonatomic, nullable, copy) IBInspectable NSString *placeholder; |
| |
| /** Insets used to calculate the spacing of subviews. */ |
| @property(nonatomic, assign, readonly) UIEdgeInsets textInsets; |
| |
| /** |
| Embedded textView. Can be set from storyboard or will be auto-created during initialization. |
| */ |
| @property(nonatomic, nullable, strong) IBOutlet MDCIntrinsicHeightTextView *textView; |
| |
| /** |
| * Whether or not the multiline text field should use its contraints to calculate its intrinsic |
| * content size. Default is NO, in which case the multiline text field gives an approximate |
| * intrinsic content size using its subviews. |
| */ |
| @property(nonatomic) BOOL useConstraintsForIntrinsicContentSize; |
| |
| /** |
| A block that is invoked when the @c MDCMultilineTextField receives a call to @c |
| traitCollectionDidChange:. The block is called after the call to the superclass. |
| */ |
| @property(nonatomic, copy, nullable) void (^traitCollectionDidChangeBlock)( |
| MDCMultilineTextField *_Nonnull textField, UITraitCollection *_Nullable previousTraitCollection) |
| ; |
| |
| @end |
| |
| @interface MDCMultilineTextField (UIAccessibility) |
| |
| /** |
| The default value of isAccessibilityElement for MDCMultilneTextField is false. When |
| isAccessibilityElement is false, the entire view is treated as a container. VoiceOver traverses |
| each accessibility element within MDCMultilineTextField and reads the accessibilityLabel of each |
| element. Since MDCMutlilineTextField acts merely as a container, setting accessibilityLabel on |
| MDCMultilineTextField has no effect. |
| |
| If isAccessibilityElement is set to true, the entire MDCMultilineTextField is treated as one |
| accessibility element, as opposed to a container. The accessibilityLabel for MDCMultilineTextField |
| will be a computed property. The value returned will be a concatenation of accessibilityLabel of the |
| elements contained within the MDCMultilineTextField. If accessibilityLabel for MDCMultilineTextField |
| is set, the assigned value is used in place of placeholder label's accessibilityLabel when |
| concatenating. |
| |
| */ |
| |
| @property(nonatomic) BOOL isAccessibilityElement; |
| |
| /** |
| See comments for isAccessibilityElement |
| */ |
| @property(nullable, nonatomic, copy) NSString *accessibilityLabel; |
| |
| @end |
| |
| API_DEPRECATED_END |