我想在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将输出put日志)。
那么,有没有办法达到我的目标呢?
加:我使用KVO来观察淡水河谷( vale string of UIPasteboard ),当我在UITextview中复制操作时,观察者将不会响应。
发布于 2016-11-19 13:05:11
复制:
UIPasteboard *pb = [UIPasteboard generalPasteboard];
[pb setString:[textView text]];粘贴:
UIPasteboard *pb = [UIPasteboard generalPasteboard];
textView.text = [pb string];https://stackoverflow.com/questions/40693107
复制相似问题