复制所有文本后隐藏复制并取消选择UITextView选项

时间:2012-09-14 09:35:29

标签: cocoa-touch copy uitextview uimenucontroller

我正在开发一个消息传递应用。我想在用户在UITextView中输入消息时为用户提供“复制”选项。当用户按下“复制”按钮时,它正在复制消息,但弹出窗口反复显示,文本仍可选择。

我不知道如何控制它。我已粘贴一些源代码供您参考。

我为UITextView写了一个子类。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    NSLog(@"Action : %@", NSStringFromSelector(action));
    NSLog(@"Sender : %@", sender);
    if (action == @selector(copy:))
    {
        [self selectAll:self];
        //return [super canPerformAction:action withSender:sender];
        return YES;
    }
    else if (action == @selector(cut:))
    {
        return NO;
    } 
        return NO;
}

2 个答案:

答案 0 :(得分:1)

我已经解决了我的问题。我用下面的代码来解决。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(copy:))
    {
        [self selectAll:self];

        return YES;
    }
    else if (action == @selector(cut:))
    {
        return NO;
    } 
        return NO;
}


- (void)copy:(id)sender 
{
    UIPasteboard *pastBoard = [UIPasteboard generalPasteboard];
    [pastBoard setString:self.text];
    self.selectedTextRange = nil;
    [self resignFirstResponder];
}

感谢Mr.Vimal Venugopalan and Mr.Mrueg。它对我有用。这将对某人有所帮助。

答案 1 :(得分:0)

如果您使用的是iOS5

UITextView采用UITextInput协议,该协议具有selectedTextRange属性。将属性设置为nil:

在最后return NO上方添加以下代码。

self.selectedTextRange = nil;

希望这有帮助