blob: 8ae9ad453230f157523444e0f90310e225d19588 [file] [log] [blame] [edit]
// Copyright 2019-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 "MDCChipView.h"
#import "MDCTextField.h"
@class MDCChipTextField;
@protocol MDCChipTextFieldDelegate <NSObject>
@optional
- (BOOL)chipTextField:(nonnull MDCChipTextField *)chipTextField
shouldAddChipView:(nonnull MDCChipView *)chipView
atIndex:(NSInteger)index;
- (void)chipTextField:(nonnull MDCChipTextField *)chipTextField
didAddChipView:(nonnull MDCChipView *)chipView
atIndex:(NSInteger)index;
- (BOOL)chipTextField:(nonnull MDCChipTextField *)chipTextField
shouldRemoveChipView:(nonnull MDCChipView *)chipView
atIndex:(NSInteger)index;
- (void)chipTextField:(nonnull MDCChipTextField *)chipTextField
didRemoveChipView:(nonnull MDCChipView *)chipView
atIndex:(NSInteger)index;
- (void)chipTextField:(nonnull MDCChipTextField *)chipTextField
didTapChipView:(nonnull MDCChipView *)chipView
atIndex:(NSInteger)index;
@end
/*
MDCChipTextField is a sublcass of MDCTextField which is a subclass of UITextField.
MDCChipTextField adds chip support to MDCTextField, including adding and removing chips
and default layout and scrolling support, as specified by the
[Material Guidelines](https://material.io/design/components/chips.html#input-chips).
*/
@interface MDCChipTextField : MDCTextField
/**
The chip views in the textfield with order.
*/
@property(nonatomic, readonly, copy, nonnull) NSArray<MDCChipView *> *chipViews;
/**
The MDCChipTextFieldDelegate of this textfield.
*/
@property(nonatomic, weak, nullable) id<MDCChipTextFieldDelegate> chipTextFieldDelegate;
/*
Appends a chip to the end of the text field.
To add a chip when hitting the enter key, set a UITextFieldDelegate to the MDCChipTextField
instance, and listen to the enter key event. Once detected, you can add a chip with the content
of the text field. Alternatively, you may present a list of options to select from and later
add a chip with the selected text.
Example:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if let chipTextField = textField as? MDCChipTextField,
let chipText = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines),
chipText.count > 0 {
chipTextField.appendChip(text: chipText) chipTextField.text = ""
}
return true
}
@param text The string to display in the chip.
*/
- (nonnull MDCChipView *)appendChipWithText:(nonnull NSString *)text
NS_SWIFT_NAME(appendChip(text:));
@end