2012-06-16 2 views
6

Я использую UIPasteboard для копирования/вставки текста между двумя UITextView.Как очистить/очистить картона на видуWillDisappear

код выглядит следующим образом:

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

И даже это не могу помочь (NSLog возвращает: pasteb2 (null))

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

ответ

19

IOS - UIPasteboard

Попробуйте следующее: ответ

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

Arab_Geek является правильным, но для какао (и я подозреваю, что вы ищете решение IOS)

+0

Большое спасибо! –

+1

Спасибо за ответ. Если кто-то хочет уродливую длинную одиночную строку: '[[UIPasteboard generalPasteboard] setValue: @" "forPasteboardType: UIPasteboardNameGeneral];' –

3

OS X - NSPasteboard

Здесь вы идете ..

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

К сожалению, он неправильно понимает «NSStringPboardType». Кроме того, NSPasteboard не существует. –

+0

@ Sheona8 #import <- добавить это в ваш .m файл –

+0

прав, пишет не найден (я также пытался найти фреймворк - неудачно) –

2

Установка значения "" будет return nil для всех целей. Однако он оставит картон в немного отличном состоянии до операции вставки.

Swift

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

... не эквивалентно UIPasteboard.removePasteboardWithName(). Если восстановление UIPasteboard состояние вызывает беспокойство (1), вы можете использовать следующий блок:

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) Восстановление состояния.