问题
I use UIPasteboard
to copy/paste text between two UITextView
.
Code looks like this:
- (void)viewDidLoad {
[super viewDidLoad];
pasteBoard = [UIPasteboard generalPasteboard]; //it is declared in .h as UIPasteboard *pasteBoard;
}
-(IBAction)doCopyBtn {
if (![toCopyTextView.text isEqualToString:@""]){
pasteBoard.string = toCopyTextView.text;
NSLog(@"pasteb1 %@", pasteBoard.string);
} else {
NSLog (@"error! enter smth");
}
}
-(IBAction)doPasteBtn {
if (![pasteBoard.string isEqualToString:@""]){
toPasteTextView.text = pasteBoard.string;
NSLog(@"pasteb2 %@", pasteBoard.string);
} else {
NSLog (@"error! enter smth");
}
}
And even this cant help (NSLog returns: pasteb2 (null)
)
-(void) viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[pasteBoard setString:@""];
}
回答1:
iOS – UIPasteboard
Try the following:
UIPasteboard *pb = [UIPasteboard generalPasteboard];
[pb setValue:@"" forPasteboardType:UIPasteboardNameGeneral];
Arab_Geek's response is correct but available for Cocoa (and I suspect you are looking for an iOS solution)
回答2:
OS X - NSPasteboard
Here you go ..
NSPasteboard *pb = [NSPasteboard generalPasteboard];
[pb declareTypes: [NSArray arrayWithObject:NSStringPboardType] owner: self];
[pb setString: @"" forType: NSStringPboardType];
回答3:
Setting the value to ""
will return nil
for all intended purposes. It will, however, leave the pasteboard in a slightly different state as before a paste operation.
Swift
let pb = self.pasteBoard()
pb.setValue("", forPasteboardType: UIPasteboardNameGeneral)
...is not equivalent to UIPasteboard.removePasteboardWithName()
. If restoring the UIPasteboard
state is of concern(1), you can use the following block:
Swift
let pb = self.pasteBoard()
let items:NSMutableArray = NSMutableArray(array: pb.items)
for object in pb.items {
if let aDictionary = object as? NSDictionary {
items.removeObject(aDictionary)
}
}
pb.items = items as [AnyObject]
(1) Restoring state.
来源:https://stackoverflow.com/questions/11067554/how-to-clear-empty-pasteboard-on-viewwilldisappear