123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- //
- // YMTextView.h
- // andaowei
- //
- // Created by YoMi on 2023/11/6.
- //
- #import <UIKit/UIKit.h>
- NS_ASSUME_NONNULL_BEGIN
- @class YMTextView;
- typedef void(^YMTextViewHandler)(YMTextView *textView);
- typedef void(^YMTextViewHeightDidChangedBlock)(YMTextView *textView, CGFloat currentTextViewHeight);
- IB_DESIGNABLE
- @interface YMTextView : UITextView
- /**
- 便利构造器.
- */
- + (instancetype)textView;
- /**
- 设定文本开始编辑Block回调. (切记弱化引用, 以免造成内存泄露.)
- */
- - (void)addTextDidBeginEditingHandler:(YMTextViewHandler)beginEditingHandler;
- /**
- 设定文本改变Block回调. (切记弱化引用, 以免造成内存泄露.) 需要在setText:方法调用之前,不然获取不到setText:的改变
- */
- - (void)addTextDidChangeHandler:(YMTextViewHandler)eventHandler;
- /**
- 设定文本结束编辑Block回调. (切记弱化引用, 以免造成内存泄露.)
- */
- - (void)addTextDidEndEditingHandler:(YMTextViewHandler)endEditingHandler;
- /**
- 设定达到最大长度Block回调. (切记弱化引用, 以免造成内存泄露.)
- */
- - (void)addTextLengthDidMaxHandler:(YMTextViewHandler)maxHandler;
- /**
- 最大限制文本长度, 默认为无穷大, 即不限制, 如果被设为 0 也同样表示不限制字符数.
- */
- @property (nonatomic, assign) NSUInteger maxLength;
- /**
- 圆角半径.
- */
- @property (nonatomic, assign) IBInspectable CGFloat cornerRadius;
- /**
- 边框宽度.
- */
- @property (nonatomic, assign) IBInspectable CGFloat borderWidth;
- /**
- 边框颜色.
- */
- @property (nonatomic, strong) IBInspectable UIColor *borderColor;
- /**
- placeholder, 会自适应TextView宽高以及横竖屏切换, 字体默认和TextView一致.
- */
- @property (nonatomic, copy) IBInspectable NSString *placeholder;
- /**
- placeholder文本颜色, 默认为#C7C7CD.
- */
- @property (nonatomic, strong) IBInspectable UIColor *placeholderColor;
- /**
- placeholder文本字体, 默认为UITextView的默认字体.
- */
- @property (nonatomic, strong) UIFont *placeholderFont;
- /**
- placeholder文本最大行数
- */
- @property (nonatomic, assign) NSInteger placeholderMaximumNumberOfLines;
- /**
- placeholder文本换行模式, 默认为NSLineBreakByCharWrapping
- */
- @property (nonatomic, assign) NSLineBreakMode placeholderLineBreakMode;
- /**
- UITextView的text和placeholder四边间距 默认UIEdgeInsetsMake(8, 3, 8, 3)
- */
- @property (nonatomic, assign) IBInspectable UIEdgeInsets ym_textContainerInset;
- /**
- 是否禁止换行 默认为NO
- */
- @property (nonatomic, assign) BOOL disableNewline;
- /**
- 是否禁止空格 默认为NO
- */
- @property (nonatomic, assign) BOOL disableWhitespace;
- /**
- 禁止第一个字符输入空格 默认为YES
- */
- @property (nonatomic, assign) BOOL disableFirstWhitespace;
- /**
- 是否点击Return按钮自动取消编辑状态 默认为NO
- */
- @property (nonatomic, assign) BOOL isResignFirstResponderAfterReturn;
- /**
- 是否允许长按弹出UIMenuController, 默认为YES.
- */
- @property (nonatomic, assign, getter=isCanPerformAction) BOOL canPerformAction;
- /**
- 获取自动高度的block回调
- */
- @property (nonatomic, copy) YMTextViewHeightDidChangedBlock textViewHeightDidChanged;
- /**
- 最大高度,如果需要随文字改变高度的时候使用
- */
- @property (nonatomic, assign) CGFloat maxHeight;
- /**
- 最小高度,如果需要随文字改变高度的时候使用
- */
- @property (nonatomic, assign) CGFloat minHeight;
- /**
- 该属性返回一个经过处理的 `self.text` 的值, 去除了首位的空格和换行.
- */
- @property (nonatomic, readonly) NSString *formatText;
- @end
- NS_ASSUME_NONNULL_END
|