iOS - 检测用户何时复制到剪贴板 - [UIPasteboard genericPasteboard]

问题描述 投票:0回答:3

快速简单的问题

使用带有一些文本的 WebView 时 - 用户可以从中选择文本片段 并按下我创建的 UIButton - 运行以下操作:

-(IBAction)copyToClip
{
    NSString *copyClip = [UIPasteboard generalPasteboard].string;
    NSLog(@"Clip = %@",copyClip);
    // (works fine)
}

我想在没有 UIButton 的情况下调用相同的函数,因此当用户执行“复制”操作时,它将激活上述代码。 (我假设是一个听众)

什么是合适的监听器?

iphone objective-c ios copy-paste uipasteboard
3个回答
16
投票

使用 NSNotificationCenter 并注册 UIPasteboardChangedNotification: http://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIPasteboard_Class/Reference.html#//apple_ref/c/data/UIPasteboardChangedNotification

[[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(copyToClip) name:UIPasteboardChangedNotification object:nil];

0
投票

如果有人对 Xamarin/C# 版本感兴趣:

NSNotificationCenter.DefaultCenter.AddObserver(UIPasteboard.ChangedNotification, 
            notification => { 
                // custom code here
            });

0
投票

斯威夫特5

UIPasteboard.changedNotification

NotificationCenter.default.addObserver(self, selector: #selector(handleCopy), name: UIPasteboard.changedNotification, object: nil)

@objc func handleCopy(sender: NSNotification) {
    // Handle new pasteboard
    print("pasteboard changed: \(UIPasteboard.general.items.first)")
}

不要忘记将

@objc
添加到您的处理程序中,以便该方法对 Objective-C 选择器可见。

© www.soinside.com 2019 - 2024. All rights reserved.