1
This commit is contained in:
53
CustomKeyboard/View/KBStreamTextView.h
Normal file
53
CustomKeyboard/View/KBStreamTextView.h
Normal file
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// KBStreamTextView.h
|
||||
// KeyBoard
|
||||
//
|
||||
// 一个可滚动的视图,用于接收“流式”文本输入。
|
||||
// 当检测到分隔符(默认: "\t" 制表符)时,会将当前累计的文本作为一个段落
|
||||
// 创建一个新的 UILabel;每个标签支持自动换行和点击事件。
|
||||
// 适用于流式数据逐步到达、按段落追加展示的场景。
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef void (^KBStreamTextTapHandler)(NSInteger index, NSString *text);
|
||||
|
||||
@interface KBStreamTextView : UIView
|
||||
|
||||
/// 分段分隔符,默认 "\t"(制表符)。
|
||||
@property (nonatomic, copy) NSString *delimiter;
|
||||
|
||||
/// 标签使用的字体,默认系统 16 号。
|
||||
@property (nonatomic, strong) UIFont *labelFont;
|
||||
|
||||
/// 标签文本颜色,iOS 13+ 默认 labelColor,低版本默认黑色。
|
||||
@property (nonatomic, strong) UIColor *labelTextColor;
|
||||
|
||||
/// 水平内边距(左右留白),默认 12。
|
||||
@property (nonatomic, assign) CGFloat contentHorizontalPadding;
|
||||
|
||||
/// 标签间的垂直间距,默认 5。
|
||||
@property (nonatomic, assign) CGFloat interItemSpacing;
|
||||
|
||||
/// 标签点击回调,提供被点击的序号与文本。
|
||||
@property (nonatomic, copy, nullable) KBStreamTextTapHandler onLabelTap;
|
||||
|
||||
/// 是否裁剪各段落前后的空白/换行,默认 YES。
|
||||
@property (nonatomic, assign) BOOL shouldTrimSegments;
|
||||
|
||||
/// 追加流式文本(边输边见):
|
||||
/// - 实时将未完成段落展示在“当前标签”上;
|
||||
/// - 当遇到分隔符时,先将当前标签视为“完成段”,可选裁剪空白,再创建一个新的空标签作为下一段的容器。
|
||||
- (void)appendStreamText:(NSString *)text;
|
||||
|
||||
/// 清空所有标签并重置内部缓冲。
|
||||
- (void)reset;
|
||||
|
||||
/// 结束输入:将当前正在输入的段落视为完成段(按需裁剪),但不会再新建标签。
|
||||
- (void)finishStreaming;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
Reference in New Issue
Block a user