0

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

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

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

4

1 回答 1

0

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

这是您的Q的答案。但最后有一些评论:

  • 如果你 swizzle 一个方法,self 将指向消息的接收者。在您的情况下,它是UIResponder. 所以你必须使用self. 你怎么能做到这一点?一般不会,因为:

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

  • 因为这-copy:通常在子类中被覆盖。(我认为,它在实现中什么都不做。UIResponder)混入不会改变子类实例中的任何行为。您熟悉响应者链的概念吗?-copy:UIResponder

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

  • 如果你真的想做一些 swizzling,因为它很酷,我更喜欢+generalPasteboard( UIPasteboard)。

  • 但也许你应该更详细地描述你的最终目标。可能有一种完全不同的方式来达到它。

于 2013-08-20T14:46:30.547 回答