Cómo hacer copiar / pegar función mediante programación en iphone?


Tengo una vista de texto con algo de texto y un botón de copia en esa vista,

Cuando el usuario introduce algún texto y presiona el botón copiar, necesita copiar ese texto y pegarlo donde quiera.

Sé que hay un controlador de menú de copiar/pegar predeterminado en iOS, pero quiero hacer esta funcionalidad con un clic de botón. Creo que hay UIPasteboard para hacer esta funcionalidad, pero no se como usarla.

Author: Suragch, 2011-11-08

5 answers

Para copiar desde un clic de botón:

- (IBAction)copy {
    UIPasteboard *pb = [UIPasteboard generalPasteboard];
    [pb setString:[textView text]];
}

Para pegar desde un clic de botón:

- (IBAction)paste {
    UIPasteboard *pb = [UIPasteboard generalPasteboard];
    textView.text = [pb string];
}
 114
Author: iscavengers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-05 01:53:52

Swift

Esta es la versión Rápida de la respuesta aceptada.

Copiar

UIPasteboard.general.string = myTextView.text

Pegar

if let myString = UIPasteboard.general.string {
    myTextView.insertText(myString)
}
 9
Author: Suragch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-07 03:33:05

Para los desarrolladores que usan MonoTouch, aquí están las dos líneas que usé para completar la tarea en C#.

La respuesta que iscavenger proporcionó a esta pregunta sirvió como modelo para mi respuesta (después de implementarla con éxito en mi proyecto ;-)

UIPasteboard clipboard = UIPasteboard.General;
clipboard.String =  "string being added to clipboard";
 7
Author: benhorgen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-16 16:29:05

No estoy seguro de por qué no podemos simplemente usar:

[theTextView paste:nil];

Según UIResponder docs

 6
Author: Ben Packard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-05 01:37:12

Sospecho que puede hacer relativamente fácilmente lo que quiere, comenzando con el [UIPasteboard dataForPasteboardType:] método .

Hay un código de ejemplo de Apple que puedes ver en:

Http://developer.apple.com/library/ios/#samplecode/CopyPasteTile/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009040

 4
Author: Michael Dautermann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-08 04:47:26