剪切文本后,UIPasteBoard字符串永远不会得到正确的值

时间:2012-04-25 03:43:44

标签: ipad uiwebview uitextview cut uipasteboard

我使用UIMenuController在textview中剪切了一个文本,我想把它粘贴到另一个地方。但UIPasteBoard字符串永远不会得到正确的价值。仅供参考,它只是在剪切过程中发生,但复制中没有问题。

在示例中: 我复制了“XYZ”并粘贴它,UIPasteBoard字符串包含正确的值,有“XYZ”

然后,我想剪切“ABC”并粘贴它,但是UIPasteBoard字符串包含错误的值,它是“XYZ”而不是“ABC”,而xcode输出给我一个文本Webcore NSBeep()!

我不明白为什么会发生这种情况,有人能给我一些线索吗?谢谢

更新

我只使用canPerformAction方法:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender{

    return [super canPerformAction:action withSender:sender];
}

2 个答案:

答案 0 :(得分:2)

这是您应该如何使用简单文本设置粘贴板:

[[UIPasteboard generalPasteboard] setString:@"XYZ"];

使用您自己的UIMenuController

UIMenuItem * copy = [[UIMenuItem alloc] initWithTitle:@"Copy Text" action:@selector(copyText:)];

UIMenuController * actionMenu = [UIMenuController sharedMenuController];
[actionMenu setMenuItems:[NSArray arrayWithObjects: copy, nil]];
[actionMenu setTargetRect:someButton.frame inView:someButton.superview];
[actionMenu setArrowDirection:UIMenuControllerArrowDefault];
[actionMenu setMenuVisible:YES animated:YES];

-(void)copyText:(id)sender {
    UIButton * button = (UIButton*)sender;
    [[UIPasteboard generalPasteboard] setString:button.titleLabel.text];
}

答案 1 :(得分:-1)

  

在示例中:我复制了“XYZ”并将其粘贴,即UIPasteBoard字符串   包含正确的值,有“XYZ”

     

然后,我想剪切“ABC”并粘贴它,但是UIPasteBoard字符串   包含错误的值,它是“XYZ”而不是“ABC”,以及xcode输出   给我一个文字 Webcore NSBeep()!

答案: Webcore NSBeep()!因为“ABC”没有被复制到你的剪贴板中并且通过哔哔声通知错误(恕我直言,这不是通过任何平台通知错误的明智方式,它可能是任何视觉指示)

请注意:NSBeep()是iPhone上不存在的ApplicationKit框架的一部分。