Я хочу подключить нужную строку в 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, наблюдатель не отвечает.