inputAccessoryView: UITextField和UITextView有一个inputAccessoryView的属性,当展示一个自定义的view的时候.设置此属性,该view就会在键盘上面一起显示.通常是tooBarView,用于改变不同键盘和回收键盘.
inputView: 就是显示键盘的View,如果重写这个方法则不再弹出键盘,代替的使我们自定义的view.
扩展: 但是当我们操作的视图不是UITextField或者UITextView的时候,inputAccessoryView和inputView就会变成readonly.
因为此时用的是UIResponder的只读属性inputAccessoryView和inputView.我们可以重新设置新的辅助视图,属性设置为可读可写,然后在.m里面重写canBecomeFirstResponder:,在需要弹出的时候调用becomeFirstResponder,即可.
@interface UIResponder (UIResponderInputViewAdditions)
// Called and presented when object becomes first responder. Goes up the responder chain.
@property (nullable, nonatomic, readonly, strong) __kindof UIView *inputView NS_AVAILABLE_IOS(3_2);
@property (nullable, nonatomic, readonly, strong) __kindof UIView *inputAccessoryView NS_AVAILABLE_IOS(3_2);
- 场景1: UITextField或者UITextView成为第一响应者后,就弹出我们自定义的view,比如时光机视图.
- 场景2: 自定义键盘.
- 场景3: 自定义UILabel, cell…这些view的子类,设置自定义的inputAccessoryView和inputView比如:相册的选择.