How to clear/empty pasteboard on viewWillDisappear

I use UIPasteboard to copy/paste text between two UITextView.

Code looks like this:

  • estimatedHeightForRowAt is not called on scroll
  • How to read data structure from .plist file into NSArray
  • why UITextView draws text in bad frame after resizing?
  • iOS >> Dragged View is Jumping Back to Original Position >> Auto Layout Combined with UIPanGestureRecognizer Issue
  • Dismiss UITableViewRowAction
  • Getting current time from timezone, not the system/mobile time
  • - (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:@""]; 
    }
    

    3 Solutions Collect From Internet About “How to clear/empty pasteboard on viewWillDisappear”

    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)

    OS X – NSPasteboard

    Here you go ..

    NSPasteboard *pb = [NSPasteboard generalPasteboard];
    [pb declareTypes: [NSArray arrayWithObject:NSStringPboardType] owner: self];
    [pb setString: @"" forType: NSStringPboardType];
    

    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.