我有一些textFields是可编辑的。当用户选择其文本时,将显示复制和粘贴菜单项。
我想知道用户何时点击副本。因为我想更改复制的文本。
可能吗?
更多详细信息:
我想更改3个文本字段的副本。复制文本字段之一时,我想将所有这3个文本字段的文本连接到剪贴板中。此页面中还有其他文本字段,但是我不想为它们做任何事情。
答案 0 :(得分:1)
您可以实现copy()
方法来“拦截”复制操作并修改放置在剪贴板上的内容。
最简单的方法可能是UITextField
的简单子类:
//
// MyTextField.h
//
// Created by Don Mag on 5/29/19.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface MyTextField : UITextField
@end
NS_ASSUME_NONNULL_END
和
//
// MyTextField.m
//
// Created by Don Mag on 5/29/19.
//
#import "MyTextField.h"
@implementation MyTextField
- (void)copy:(id)sender {
// debugging
NSLog(@"copy command selected");
// get the selected range
UITextRange *textRange = [self selectedTextRange];
// if text was selected
if (textRange) {
// get the selected text
NSString *selectedText = [self textInRange:textRange];
// change it how you want
NSString *modifiedText = [NSString stringWithFormat:@"Prepending to copied text: %@", selectedText];
// get the general pasteboard
UIPasteboard *pb = [UIPasteboard generalPasteboard];
// set the modified copied text to the pasteboard
pb.string = modifiedText;
}
}
@end
答案 1 :(得分:0)
您可以从剪贴板复制字符串并在粘贴之前更新到剪贴板。
NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged),
name: UIPasteboard.changedNotification , object: nil)
@objc func clipboardChanged() {
if let clipboardString = UIPasteboard.general.string as? String {
// Update string as per your requirement
let myString = textfield1.text! + " " + textfield2.text! + " " + textfield3.text! + " Append String"
textfield1.text = myString
textfield2.text = myString
textfield3.text = myString
print(myString)
}
}