Как я могу подключить UIPasteboard в UITextView?

Я хочу подключить нужную строку в UIPasteboard, когда она изменится, я что-нибудь сделаю. свойство определяется как:

@property(nullable,nonatomic,copy) NSString *string

Я использую метод swizzle, заменяющий string на stringSwizzle, setString на setStringSwizzle следующим образом:

- (void) setStringSwizzle:(NSString *) string {
    NSLog(@"setStringSwizzle: %@", string);
    [self setStringSwizzle:string];
}

- (NSString *) stringSwizzle {
    NSLog(@"stringSwizzle - %@", [self stringSwizzle]);
    return [self stringSwizzle];
}

Когда я использую следующий код, он введет setStringSwizzle и выведет мой журнал:

UIPasteboard *uiPasteboard = [UIPasteboard generalPasteboard];
uiPasteboard.string = @"test1";
[uiPasteboard setString:@"test2"];
[uiPasteboard setValue:@"test3" forKey:@"string"];

Однако, когда я выполняю действие копирования в UITextView, он не выводит журнал setStringSwizzle (но метод stringSwizzle выводит журнал ввода).

Итак, есть ли способ достичь моей цели?

-------------

плюс: я использую KVO для наблюдения за значением string UIPasteboard, и когда я копирую действие в UITextview, наблюдатель не отвечает.


person waitianlou    schedule 19.11.2016    source источник
comment
Когда вы выполняете действие копирования в UITextView, оно будет использовать [UIPasetboard setData: forPasteboardType:]   -  person waitianlou    schedule 24.11.2016


Ответы (1)


Копировать :

 UIPasteboard *pb = [UIPasteboard generalPasteboard];
    [pb setString:[textView text]];

Вставить :

UIPasteboard *pb = [UIPasteboard generalPasteboard];
    textView.text = [pb string];
person Munahil    schedule 19.11.2016
comment
Спасибо, но что я могу использовать метод setString в UIPasteboard? - person waitianlou; 19.11.2016
comment
почему ты хочешь погуглить? - person Munahil; 19.11.2016
comment
я хочу делать что-то, когда строка изменяется - person waitianlou; 21.11.2016