2012-06-16 15 views
6

Używam UIPasteboard do kopiowania/wklejania tekstu między dwoma UITextView.Jak wyczyścić/opróżnić karton na widokuWillDisappear

Kod wygląda następująco:

- (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"); 
    } 
} 

I nawet to cant help (NSLog powraca: pasteb2 (null))

-(void) viewWillDisappear:(BOOL)animated{ 
    [super viewWillDisappear:animated]; 
    [pasteBoard setString:@""]; 
} 

Odpowiedz

19

iOS - UIPasteboard

Spróbuj wykonać następujące czynności: Odpowiedź

UIPasteboard *pb = [UIPasteboard generalPasteboard]; 
    [pb setValue:@"" forPasteboardType:UIPasteboardNameGeneral]; 

Arab_Geek jest poprawna, ale dostępne dla kakao (i podejrzewam szukasz roztworze iOS)

+0

Dziękuję bardzo! –

+1

Dzięki za odpowiedź. Jeśli ktoś chce brzydkiej długiej linii: '[[UIPasteboard generalPasteboard] setValue: @" "forPasteboardType: UIPasteboardNameGeneral];' –

3

OS X - NSPasteboard

Tu idziesz ..

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

Niestety nie rozumie "NSStringPboardType". Ponadto NSPasteboard nie istnieje. –

+0

@ Sheonna8 #import <- dodaj to do pliku .m –

+0

trued, pisze nie znalezione (próbowałem także znaleźć framework - nie powiodło się) –

2

Ustawienie wartości "" będzie zwrócić nil dla wszystkich zamierzonych celów. Zostanie jednak pozostawiony w nieco innym stanie niż przed wklejeniem.

Swift

let pb = self.pasteBoard() 
pb.setValue("", forPasteboardType: UIPasteboardNameGeneral) 

... nie jest równoznaczne z UIPasteboard.removePasteboardWithName(). Jeśli przywrócenie stanu UIPasteboard ma obawy (1), można użyć następujący blok:

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] 

państwowej (1) Przywracanie.