blob: 9feba324eed06f7a040cc716ff775d288ace54a3 [file] [log] [blame]
// Copyright 2016-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>
#import "MDCTextInput.h"
#import "MaterialElevation.h"
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))
/** When text is manually set via .text or setText:, this notification fires. */
extern NSString *_Nonnull const MDCTextFieldTextDidSetTextNotification;
/** When the value of `enabled` changes on the text input, this notification fires. */
extern NSString *_Nonnull const MDCTextInputDidToggleEnabledNotification;
/**
Material Design compliant single-line text input.
https://www.google.com/design/spec/components/text-fields.html#text-fields-single-line-text-field
*/
@interface MDCTextField
: UITextField <MDCTextInput, MDCLeadingViewTextInput, MDCElevatable, MDCElevationOverriding>
/** MDCTextField does not implement borders that conform to UITextBorderStyle. */
@property(nonatomic, assign) UITextBorderStyle borderStyle NS_UNAVAILABLE;
/**
This label should always have the same layout as the input field (which is private API.)
Unfortunately the included private baseline strut (which is the label returned for baseline-based
auto layout) has bugs that keep it from matching custom layout. We recreate it but also allow it to
have a width in case someone needs other kinds of auto layout constraints based off the input.
It always has an alpha of 0.0.
*/
@property(nonatomic, nonnull, strong, readonly) UILabel *inputLayoutStrut;
/**
An overlay view on the leading side.
Note: if RTL is engaged, this will return the .rightView and if LTR, it will return the .leftView.
*/
@property(nonatomic, nullable, strong) UIView *leadingView;
/**
Controls when the leading view will display.
*/
@property(nonatomic, assign) UITextFieldViewMode leadingViewMode;
/**
A block that is invoked when the @c MDCTextField receives a call to @c
traitCollectionDidChange:. The block is called after the call to the superclass.
*/
@property(nonatomic, copy, nullable) void (^traitCollectionDidChangeBlock)
(MDCTextField *_Nonnull textField, UITraitCollection *_Nullable previousTraitCollection);
@end
API_DEPRECATED_END