QMUITextViewDelegate
@protocol QMUITextViewDelegate <UITextViewDelegate>
@optional
/**
* 输入框高度发生变化时的回调,当实现了这个方法后,文字输入过程中就会不断去计算输入框新内容的高度,并通过这个方法通知到 delegate
* @note 只有当内容高度与当前输入框的高度不一致时才会调用到这里,所以无需在内部做高度是否变化的判断。
*/
- (void)textView:(QMUITextView *)textView newHeightAfterTextChanged:(CGFloat)height;
/**
* 用户点击键盘的 return 按钮时的回调(return 按钮本质上是输入换行符“\n”)
* @return 返回 YES 表示程序认为当前的点击是为了进行类似“发送”之类的操作,所以最终“\n”并不会被输入到文本框里。返回 NO 表示程序认为当前的点击只是普通的输入,所以会继续询问 textView:shouldChangeTextInRange:replacementText: 方法,根据该方法的返回结果来决定是否要输入这个“\n”。
* @see maximumTextLength
*/
- (BOOL)textViewShouldReturn:(QMUITextView *)textView;
/**
* 配合 `maximumTextLength` 属性使用,在输入文字超过限制时被调用。例如如果你的输入框在按下键盘“Done”按键时做一些发送操作,就可以在这个方法里判断 [replacementText isEqualToString:@"\n"]。
* @warning 在 textViewDidChange: 里也会触发文字长度拦截,由于此时 textView 的文字已经改变完,所以无法得知发生改变的文本位置及改变的文本内容,所以此时 range 和 replacementText 这两个参数的值也会比较特殊,具体请看参数讲解。
*
* @param textView 触发的 textView
* @param range 要变化的文字的位置,如果在 textViewDidChange: 里,这里的 range 也即文字变化后的 range,所以可能比最大长度要大。
* @param replacementText 要变化的文字,如果在 textViewDidChange: 里,这里永远传入 nil。
*/
- (void)textView:(QMUITextView *)textView didPreventTextChangeInRange:(NSRange)range replacementText:(NSString *)replacementText;
@end
Undocumented
-
输入框高度发生变化时的回调,当实现了这个方法后,文字输入过程中就会不断去计算输入框新内容的高度,并通过这个方法通知到 delegate
Note
只有当内容高度与当前输入框的高度不一致时才会调用到这里,所以无需在内部做高度是否变化的判断。Declaration
Objective-C
- (void)textView:(QMUITextView *)textView newHeightAfterTextChanged:(CGFloat)height;
Swift
optional func textView(_ textView: QMUITextView!, newHeightAfterTextChanged height: CGFloat)
-
用户点击键盘的 return 按钮时的回调(return 按钮本质上是输入换行符“\n”)
See
maximumTextLengthDeclaration
Objective-C
- (BOOL)textViewShouldReturn:(QMUITextView *)textView;
Swift
optional func textViewShouldReturn(_ textView: QMUITextView!) -> Bool
Return Value
返回 YES 表示程序认为当前的点击是为了进行类似“发送”之类的操作,所以最终“\n”并不会被输入到文本框里。返回 NO 表示程序认为当前的点击只是普通的输入,所以会继续询问 textView:shouldChangeTextInRange:replacementText: 方法,根据该方法的返回结果来决定是否要输入这个“\n”。
-
配合
maximumTextLength
属性使用,在输入文字超过限制时被调用。例如如果你的输入框在按下键盘“Done”按键时做一些发送操作,就可以在这个方法里判断 [replacementText isEqualToString:@“\n”]。Warning
在 textViewDidChange: 里也会触发文字长度拦截,由于此时 textView 的文字已经改变完,所以无法得知发生改变的文本位置及改变的文本内容,所以此时 range 和 replacementText 这两个参数的值也会比较特殊,具体请看参数讲解。
Declaration
Objective-C
- (void)textView:(QMUITextView *)textView didPreventTextChangeInRange:(NSRange)range replacementText:(NSString *)replacementText;
Swift
optional func textView(_ textView: QMUITextView!, didPreventTextChangeIn range: NSRange, replacementText: String!)
Parameters
textView
触发的 textView
range
要变化的文字的位置,如果在 textViewDidChange: 里,这里的 range 也即文字变化后的 range,所以可能比最大长度要大。
replacementText
要变化的文字,如果在 textViewDidChange: 里,这里永远传入 nil。