2010-09-30 19 views
5

Im hablando del menú que aparece cuando selecciona un bloque de texto que le da la opción de cortar/pegar/copiar. Descubrí cómo agregar una opción más al menú, pero si agrego dos o más opciones, primero dirá "más". Al hacer clic en él, se mostrarán todas las opciones que agregué. Pero, ¿hay alguna manera de mostrar todas las opciones que agregué por adelantado? sin el elemento de menú "más"?menú de contexto de iPhone/iPad

Respuesta

7

Necesita usar un UIMenuController. Si no desea copiar/pegar/cortar, podrás incluir algo como esto en su canPerformAction: método:

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

Creación de un nuevo elemento de menú es el siguiente:

UIMenuItem *someAction = [[UIMenuItem alloc]initWithTitle:@"Something" action:@selector(doSomething:)]; 

UIMenuController *menu = [UIMenuController sharedMenuController]; 
menu.menuItems = [NSArray arrayWithObject:someAction]; 
[menu update]; 
+1

No es que no quiera eso. Necesito agregar dos elementos de menú más. – Melina

+0

Luego sigues usando algo como lo publiqué, pero en lugar de hacer @selector (copiar :), cambiarlo a algo como @selector (copyText :), luego implementar tu propio método copyText (vacío) que realiza la copia. Entonces sus otros artículos no serán empujados al menú más. – christo16

+0

¿Puedo cambiar el texto del elemento del menú? – Melina

1

Asumo su hablando de UIMenuController. Si no desea ver Copiar/Pegar/Cortar/Borrar/Seleccionar/Seleccionar Todo tendrá que añadir el siguiente código a su UITextField 's o UITextView' s delegado:

- (BOOL)canPerformAction: (SEL)action withSender: (id)sender { 
    BOOL answer = NO; 
    if (action == @selector(item1)) { 
     answer = YES; 
    } 
    if (action == @selector(item2)) { 
     answer = YES; 
    } 
    return answer; 
} 

Dónde item1 y son item2 los nombres de los objetos en UIMenuController.menuItems.

En mi experiencia, si usted está usando un UITextView el copiar, pegar, cortar y seleccionar todos los elementos de menú seguirá siendo, en este caso, agregue el código siguiente a una subclase de UITextView.

- (BOOL) canPerformAction:(SEL)action withSender:(id)sender { 
    if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:) || action == @selector(selectAll:)) { 
      return YES; 
    } 
} 
+0

No quiero deshabilitar esas opciones, necesito agregar dos opciones personalizadas más. – Melina

Cuestiones relacionadas