How to: Eliminar opciones de copiar/pegar en UITextField [Xamarin.iOS]

¡Hola de nuevo!

En algunos casos nos resultará necesario deshabilitar las opciones de copiar y pegar de controles de texto (UITextField) en iOS, para realizar esto se deben seguir los siguientes pasos.

1.- Crear una clase que herede de UITextField.

[Register(nameof(MyCustomTextField))]
public class CustomTextField : UITextField  

Es este paso debemos recordar registrar nuestra clase utilizando el atributo Register.

2.-Sobrescribir el método CanPerform Se necesita sobrescribir este método y regresar false para indicar que esa opción no está disponible en el control tal como se muestra en el siguiente código para las demás opciones puedes retornar la implementación base del método.

public override bool CanPerform(ObjCRuntime.Selector action, Foundation.NSObject withSender)  
        {
            if (action == new ObjCRuntime.Selector("paste:") || action == new ObjCRuntime.Selector("cut:")
                || action == new ObjCRuntime.Selector("copy:") || action == new ObjCRuntime.Selector("_share:")
                || action == new ObjCRuntime.Selector("_define:"))
            {
                return false;
            }
            return base.CanPerform(action, withSender);
        }

Algo que puedes notar es que tienes que generar una instancia del objeto Selector para comparar cada una de las opciones que desees eliminar y que el identificador de cada una de las opciones es una cadena que debes pasar en el constructor de la instancia de selector, en el código anterior estamos deshabilitando las opciones de pegar(paste:), cortar(cut:), copiar (copy:), compartir(share:) y definir(define:).

3.- Y por último debes utilizar esta clase personalizada en cada control que desees que no tenga esta funcionalidad.

El resultado

Como verás la implementación en Xamarin.iOS no es complicada, solo queda no equivocarse con las "magic strings", nos leemos en un siguiente post.

¡Saludos! @saturpimentel

Fuentes

canPerformAction(_:withSender:)

Atributo Register

José Saturnino Pimentel Juárez

Leer más posts.

Ciudad de México

Suscríbete al blog

Obtén los últimos post en tu correo

Suscríbete a la lista de correos.

*obligatorio
o suscríbete via RSS con Feedly!