Как очистить/очистить картон на viewWillDisappear

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

Код выглядит так:

- (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:@""]; 
}

person Aleksey Potapov    schedule 16.06.2012    source источник


Ответы (3)


iOS – UIPasteboard

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

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

Ответ Arab_Geek правильный, но доступен для Cocoa (и я подозреваю, что вы ищете решение для iOS)

person Riddick    schedule 26.06.2012
comment
Спасибо за ответ. Если кому-то нужна уродливая длинная одиночная строка: [[UIPasteboard generalPasteboard] setValue:@"" forPasteboardType:UIPasteboardNameGeneral]; - person Basil Bourque; 15.11.2014

OS X - NSPasteboard

Ну вот ..

NSPasteboard *pb = [NSPasteboard generalPasteboard];
[pb declareTypes: [NSArray arrayWithObject:NSStringPboardType] owner: self];
[pb setString: @"" forType: NSStringPboardType];
person AK_    schedule 16.06.2012
comment
к сожалению, он неправильно понимает NSStringPboardType. Кроме того, NSPasteboard не существует. - person Aleksey Potapov; 17.06.2012
comment
@Sheonna8 #import ‹Cocoa/Cocoa.h› ‹ — добавьте это в свой файл .m - person AK_; 17.06.2012
comment
trueed, пишет ‹Cocoa/Cocoa.h› not found (я тоже пытался найти framework - безуспешно) - person Aleksey Potapov; 17.06.2012

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

Свифт

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

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

Свифт

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

person SwiftArchitect    schedule 27.08.2015