blob: 9e1439e613300c08079297c2e4c9fbbb9f9af1ba [file] [log] [blame]
/*
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>
#import "MDCTextInput.h"
@protocol MDCMultilineTextInputLayoutDelegate;
/**
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>
/** A mirror of the same property that already exists on UITextField, UITextView, and UILabel. */
@property(nonatomic, assign) BOOL adjustsFontForContentSizeCategory;
/**
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;
/** 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, weak) IBOutlet UITextView *textView;
@end
/** Delegate for MDCTextInput size changes. */
@protocol MDCMultilineTextInputLayoutDelegate <NSObject>
@optional
/**
Notifies the delegate that the text field's content size changed, requiring the size provided for
best display.
If using auto layout, this method is unnecessary; this is a way for views not implementing auto
layout to know when to grow and shrink height to accomodate changes in content.
@param multilineTextField The text field for which the content size changed.
@param size The size required by the text view to fit all of its content.
*/
- (void)multilineTextField:(id<MDCMultilineTextInput> _Nonnull)multilineTextField
didChangeContentSize:(CGSize)size;
@end