UIResponder的Swizzling Copy方法

时间:2013-08-20 10:28:35

标签: ios objective-c swizzling

我正在调整复制:和粘贴:UIResponder的方法。 我必须将复制的内容写入私人粘贴板。

- (void)copyToPrivatePasteboard:(id)sender
{
    UIPasteboard *privatePasteboard = [self getPrivatePasteboard];
    [privatePasteboard setString:@""];//How to get the copied string to store in pasteboard.
}

如何将复制的字符串写入粘贴板。我得到的参数是id类型。 如果我将它转换为NSString,它将是不正确的,因为它是发送者正在调用此方法(UIMenuController)。

1 个答案:

答案 0 :(得分:0)

如果我理解你是正确的,那么你想用{Q}中的代码替换UIResponder's -copy:。(并使用-paste:做同样的事情。)

这是你问答的答案。但最后有一些评论:

  • 如果您调整方法,self会指向消息的接收者。在您的情况下,它是UIResponder的实例。因此,您必须使用self获取数据。你怎么能这样做?不一般,因为:

  • -copy:可以包含“将我的数据放入粘贴板”。这是一种方法。那里的代码可以处理你不能不知道的其他事情。所以你不能轻易替代它。

  • 由于此-copy:通常会在子类中被覆盖。 (我认为,它在UIResponder实现中没有任何作用。)-copy:中的Swizzling UIResponder不会改变子类实例中的任何行为。您是否熟悉responder chain

  • 的概念?

可能有更好的方法来实现您的目标:

  • 如果你真的想做一些调整,因为它很酷,我更希望+generalPasteboardUIPasteboard)。

  • 但是你应该用更多细节描述你的最终目标。可能有一种完全不同的方式来实现它。