Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How control Copy, Paste, Select All, Define in UITextView iPhone app?

I am working in the iPhone app using UITextView. I want to allow the user only can Copy the message and Paste the message. But i don't want to show Select all, Select, Define and others. I am following this below code to control the options. But, all the options are showing in UITextView click.

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:))
    {
        return NO;
    }
    else if (action == @selector(copy:))
    {
        return NO;
    }

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

Can anyone please help me to do this. And also i don't want to show |.Text.| while copying the message. Please help me to do this. Thanks in advance.

like image 266
Gopinath Avatar asked Aug 03 '12 08:08

Gopinath


People also ask

How do you turn off copy and paste on iPhone?

Open "General" in the Settings app, then tap "AirPlay & Handoff." Next, toggle off the "Handoff" switch, and your iPhone will no longer give up its clipboard to other devices or have its clipboard taken over by other devices.

How do I copy and paste multiple iphones?

In both iOS and Android, tap and hold on the text you want to copy, then drag the selector lines around all the text you want to copy, and tap Copy. Then tap and hold anywhere where you want to paste the text, and tap Paste.

What is a UITextView?

UITextView supports the display of text using custom style information and also supports text editing. You typically use a text view to display multiple lines of text, such as when displaying the body of a large text document. This class supports multiple text styles through use of the attributedText property.


2 Answers

First of all if the code you have above isn't working then you probably forgot to change the class of you UITextView to your custom class that implements the method above.

Once you've done that what you've got should work and you should then return no for select all also

   if (action == @selector(selectAll:))
        {
            return NO;
        }

also you may want to return no for cut: also assuming you don't want the user to remove text from the textView.

Also these don't need to be if else statements as they don't depend on each other

They are actually called in this order

cut: copy: select: selectAll: paste: delete:

So remove functionality as appropriate.

like image 142
AppHandwerker Avatar answered Oct 13 '22 01:10

AppHandwerker


Create a subclass of UITextField and overrride the method canPerformAction:withSender: in that class.

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    if (action == @selector(paste:) ||action == @selector(copy:))
   {
       return [super canPerformAction:action withSender:sender];
   }


   return NO;
 }
like image 35
Neo Avatar answered Oct 13 '22 00:10

Neo