我想钩在UIPasteboard中的Propery字符串,当它发生变化时,我会做一些事情。中定义的属性为:如何在UITextView中挂钩UIPasteboard?
@property(nullable,nonatomic,copy) NSString *string
我用的方法调酒更换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中复制动作时,观察者不会回应。
当做的UITextView复制动作,它会使用[UIPasetboard使用setData:forPasteboardType:] – waitianlou