2016-11-19 67 views
0

我想钩在UIPasteboard中的Propery字符串,当它发生变化时,我会做一些事情。中定义的属性为:如何在UITextView中挂钩UIPasteboard?

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

我用的方法调酒更换stringstringSwizzlesetStringsetStringSwizzle喜欢如下:

- (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中复制动作时,观察者不会回应。

+0

当做的UITextView复制动作,它会使用[UIPasetboard使用setData:forPasteboardType:] – waitianlou

回答

0

要复制:

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

粘贴:

UIPasteboard *pb = [UIPasteboard generalPasteboard]; 
    textView.text = [pb string]; 
+0

thansk,但我是什么调酒UIPasteboard的方法setString – waitianlou

+0

你为什么要搅拌? – Munahil

+0

我想在字符串更改时做某事 – waitianlou