修改UI逻辑
This commit is contained in:
@@ -161,6 +161,8 @@
|
|||||||
make.top.equalTo(self.barViewInternal.mas_bottom).offset(0);
|
make.top.equalTo(self.barViewInternal.mas_bottom).offset(0);
|
||||||
make.height.mas_equalTo(smallH);
|
make.height.mas_equalTo(smallH);
|
||||||
}];
|
}];
|
||||||
|
// 点击整个粘贴卡片按钮,行为与右侧「Paste」按钮保持一致
|
||||||
|
[self.pasteViewInternal.pasBtn addTarget:self action:@selector(onTapPaste) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
|
||||||
// 3. Tag List View
|
// 3. Tag List View
|
||||||
[self addSubview:self.tagListView];
|
[self addSubview:self.tagListView];
|
||||||
@@ -299,6 +301,24 @@ static NSString * const kKBStreamDemoURL = @"http://192.168.1.144:7529/api/demo/
|
|||||||
self.streamHasOutput = YES;
|
self.streamHasOutput = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 统一更新左侧粘贴按钮的展示:
|
||||||
|
/// - 有粘贴文本:只显示文字,不再展示左侧图标;
|
||||||
|
/// - 无粘贴文本:恢复原始图标 + 占位文案。
|
||||||
|
- (void)kb_updatePasteButtonWithDisplayText:(NSString * _Nullable)text {
|
||||||
|
if (text.length > 0) {
|
||||||
|
NSString *displayText = text;
|
||||||
|
if (displayText.length > 30) {
|
||||||
|
displayText = [[displayText substringToIndex:30] stringByAppendingString:@"…"];
|
||||||
|
}
|
||||||
|
[self.pasteView.pasBtn setImage:nil forState:UIControlStateNormal];
|
||||||
|
[self.pasteView.pasBtn setTitle:displayText forState:UIControlStateNormal];
|
||||||
|
} else {
|
||||||
|
UIImage *img = [UIImage imageNamed:@"kb_zt_icon"];
|
||||||
|
[self.pasteView.pasBtn setImage:img forState:UIControlStateNormal];
|
||||||
|
[self.pasteView.pasBtn setTitle:KBLocalized(@" Paste Ta's Words") forState:UIControlStateNormal];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - KBFunctionTagListViewDelegate
|
#pragma mark - KBFunctionTagListViewDelegate
|
||||||
|
|
||||||
- (void)tagListView:(KBFunctionTagListView *)view didSelectIndex:(NSInteger)index title:(NSString *)title {
|
- (void)tagListView:(KBFunctionTagListView *)view didSelectIndex:(NSInteger)index title:(NSString *)title {
|
||||||
@@ -415,15 +435,22 @@ static void KBULDarwinCallback(CFNotificationCenterRef center, void *observer, C
|
|||||||
UIPasteboard *pb = [UIPasteboard generalPasteboard];
|
UIPasteboard *pb = [UIPasteboard generalPasteboard];
|
||||||
NSString *text = pb.string; // 读取纯文本(可能触发系统粘贴权限弹窗)
|
NSString *text = pb.string; // 读取纯文本(可能触发系统粘贴权限弹窗)
|
||||||
|
|
||||||
if (text.length > 0) {
|
if (text.length <= 0) {
|
||||||
// 将粘贴内容展示到左侧“粘贴区”的占位文案上
|
|
||||||
self.pasteView.placeholderLabel.text = text;
|
|
||||||
// 如果需要多行展示,可按需放开(高度由外部约束决定,默认一行会截断)
|
|
||||||
// self.pasteView.placeholderLabel.numberOfLines = 0;
|
|
||||||
} else {
|
|
||||||
// 无可用文本或用户拒绝了粘贴权限;保持占位文案不变
|
// 无可用文本或用户拒绝了粘贴权限;保持占位文案不变
|
||||||
NSLog(@"粘贴板无可用文本或未授权粘贴");
|
NSLog(@"粘贴板无可用文本或未授权粘贴");
|
||||||
|
[KBHUD showInfo:KBLocalized(@"Clipboard is empty")];
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 1)把内容真正「粘贴」到当前输入框
|
||||||
|
UIInputViewController *ivc = KBFindInputViewController(self);
|
||||||
|
if (ivc) {
|
||||||
|
id<UITextDocumentProxy> proxy = ivc.textDocumentProxy;
|
||||||
|
[proxy insertText:text];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2)顺便把最新的剪贴板内容展示在左侧粘贴区按钮上,便于用户确认
|
||||||
|
[self kb_updatePasteButtonWithDisplayText:text];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - 自动监控剪贴板(复制即弹窗)
|
#pragma mark - 自动监控剪贴板(复制即弹窗)
|
||||||
@@ -448,9 +475,8 @@ static void KBULDarwinCallback(CFNotificationCenterRef center, void *observer, C
|
|||||||
|
|
||||||
// 实际读取触发系统弹窗(iOS16+)
|
// 实际读取触发系统弹窗(iOS16+)
|
||||||
NSString *text = pb.string;
|
NSString *text = pb.string;
|
||||||
if (text.length > 0) {
|
// 有文字 -> 仅展示文字;无文字/非文本 -> 恢复图标 + 原占位文案
|
||||||
self.pasteView.placeholderLabel.text = text;
|
[self kb_updatePasteButtonWithDisplayText:text];
|
||||||
}
|
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user