2016-11-19 68 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