viernes, 28 de agosto de 2015

Crear un formulario en iOS nivel PRO con UITextField. Parte III.

Continuamos a partir del anterior artículo, el cual podréis ver pulsando aquí. Lo primero que vamos a hacer es crear un botón. Este botón posteriormente será de Login, pero como todavía no podemos hacer login a ningún sitio, lo utilizaremos para hacer comprobaciones en los UITextField.

loginButton = [[UIButton alloc] initWithFrame:CGRectMake(0., 0., 100., 30.)];
    [loginButton setCenter:CGPointMake(self.view.center.x, passWordTextField.center.y + passWordTextField.frame.size.height + loginButton.frame.size.height)];
    [loginButton setTitle:NSLocalizedString(@"Check", nil) forState:UIControlStateNormal];
    [loginButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [loginButton addTarget:self action:@selector(checkAction) forControlEvents:UIControlEventTouchUpInside];
    

    [self.view addSubview:loginButton];

Posteriormente declaramos el método checkAction y el método checkFields que devolverá un booleano analizando los diferentes UITextField creados.

- (void)checkAction
{
    if([self checkFields])
        NSLog(@"Todo OK");
}

- (BOOL)checkFields
{
    if(nameTextField.text.length == 0)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo nombre no puede estar vacío.", nil)];
        return false;
    }
    if(nameTextField.text.length > 20)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo nombre no puede superar los 20 caracteres.", nil)];
        return false;
    }
    if(passWordTextField.text.length == 0)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo password no puede estar vacío.", nil)];
        return false;
    }
    if(passWordTextField.text.length > 6)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo password no puede superar los 6 caracteres.", nil)];
        return false;
    }
    if(mailTextField.text.length == 0)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo email no puede estar vacío.", nil)];
        return false;
    }
    if(mailTextField.text.length > 50)
    {
        [self presentAlertViewWithMessage:NSLocalizedString(@"El campo email no puede superar los 50 caracteres.", nil)];
        return false;
    }
    
    return true;

}

Si compilamos y ejecutamos la App podemos comprobar como nos muestra las alertas si no cumplimos alguna de las condiciones. Pero, si yo quiero prohibir al usuario, que por ejemplo no añada más de 20 caracteres en su UITextField haremos los siguiente.


Tendremos que modificar el siguiente método del delegado de UITextField

//Método que se llama cuando se introducae algún valor por teclado
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSUInteger newLength;
    
    newLength = [textField.text length] + [string length] - range.length;
    
    if([textField isEqual:nameTextField])
        return (newLength > 20) ? NO : YES;
    if([textField isEqual:mailTextField])
        return (newLength > 50) ? NO : YES;
    if([textField isEqual:passWordTextField])
        return (newLength > 6) ? NO : YES;

    return YES;
}

Si ahora compilamos y ejecutamos la App. Podemos comprobar como si intentamos introducir más caracteres de los indicados en el método, el UITextField no nos permite añadirlos.


Os dejo el código en el siguiente path de GitHub





  

miércoles, 19 de agosto de 2015

Image2icon la App para convertir imágenes en icono

Utilizo esta App desde que adquirí mi primer Macbook por el año ... Image2icon al principio sólo tenía una función, convertir las imágenes para poder sustituirlas por las carpetas azules de nuestro OSX. Y cuando algo funciona y es sencillo para qué cambiar.


Pero hace unos meses y para mi sorpresa me di cuenta de que esta App se había actualizado y venía con nuevas funcionalidades. Y he decir tras un primer vistazo, que muchas, pese a que hay que pagar por ellas, valen lo que cuestan.

Tras abrir la App vemos la imagen que tenemos a continuación. Basta con arrastrar una imagen a su interior y vemos las diferentes funciones que nos ofrece la App. Tanto de diseño de la imagen como los diferentes formatos y máscaras. Ahora sólo tenemos que exportar o arrastrar la carpeta que queramos modificar al interior y Image2icon se encargará de todo.




Aquí os dejo el link de la App 
https://itunes.apple.com/es/app/image2icon-crea-tus-propios/id992115977?mt=12

lunes, 20 de julio de 2015

Archivos .lnk en USB en MACOSX.

Para los que metéis el USB en cualquier parte (cómo se os ocurre profanarlo con un Windows) y de buenas a primeras os aparece en vuestro Mac los archivos con una extensión .lnk, ¡Enhorabuena! Os ha tocado un Malware en alguno de los lugares donde hayáis introducido vuestro USB. No os preocupéis, hoy es vuestro día de suerte porque os voy a explicar cómo arreglar la situación.


Lo primero que tenemos que hacer es abrir el terminal y copiar las siguientes instrucciones.

$ defaults write com.apple.finder AppleShowAllFiles True
$ killall Finder

Para los curiosos en este párrafo os voy a contar lo que ha sucedido y qué significan esas líneas en el terminal. Para los no curiosos podéis pasar al párrafo siguiente. Lo que este Malware ha hecho es ocultar vuestros ficheros originales creando un archivo de tipo Link que sustituye al original. Lo que hemos hecho con las anteriores líneas de Terminal es decirle al corazón Unix de nuestro MAC que nos muestre todos los archivos ocultos de todos sitios. Al final del artículo os explicaré cómo volver a ocultar estos archivos porque sino veréis un montón de archivos nuevos y que no os resultarán útiles en todas vuestras carpetas.



El siguiente paso consistirá en copiar todas las carpetas ocultas que distinguiréis por su transparencia y formatear vuestro USB  ..... ya tengo una nueva idea para otro artículo (^_^). 

Finalmente como lo prometido es deuda aquí os dejo las siguientes instrucciones para que nuestras carpetas dejen de visualizar los archivos ocultos.

$ defaults write com.apple.finder AppleShowAllFiles False
$ killall Finder



viernes, 26 de junio de 2015

Crear un formulario en iOS nivel PRO con UITextField. Parte II.

Continuamos a partir del anterior artículo, el cual podréis ver pulsando aquí. Lo primero que haremos será crear dos nuevos UITextFields para introducir una contraseña y un email.

@property (nonatomic, strong) UITextField *passWordTextField;
@property (nonatomic, strong) UITextField *mailTextField;

Les añadiremos nuevas características como la introducción de datos en modo oculto para la contraseña y un botón de borrado.

    [mailTextField setDelegate:self];
    [mailTextField setPlaceholder:@"Email"];
    [mailTextField setKeyboardType:UIKeyboardTypeEmailAddress];
    [mailTextField setReturnKeyType:UIReturnKeyDone];
    [mailTextField setBorderStyle:UITextBorderStyleLine];
    [mailTextField setClearButtonMode:UITextFieldViewModeAlways];
    
    [self.view addSubview:mailTextField];
    
    [passWordTextField setDelegate:self];
    [passWordTextField setPlaceholder:@"Contraseña"];
    [passWordTextField setKeyboardType:UIKeyboardTypeEmailAddress];
    [passWordTextField setReturnKeyType:UIReturnKeyDone];
    [passWordTextField setBorderStyle:UITextBorderStyleBezel];
    [passWordTextField setSecureTextEntry:YES];
    [passWordTextField setClearButtonMode:UITextFieldViewModeWhileEditing];
    

    [self.view addSubview:passWordTextField];




A continuación editaremos algunos elementos gráficos del UITexField. Por defecto tiene cuatro tipos de borde, aunque en próximos artículos explicaré como aumentar estas posibilidades a infinito. También le indicaremos el botón de retorno y el tipo de aspecto que queremos que tenga el teclado.
Tras ejecutar el código y comprobar los métodos del delegado del UITextField la primera duda que nos surgirá será cómo diferenciar los diferentes UITextField.


- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    if([textField isEqual:mailTextField])
        [mailTextField setText:@""];
        
    else if(textField == passWordTextField)
        passWordTextField.text = @"";
    return NO;

}



Las dos fórmulas utilizadas en el código anterior son correctas. Si lo que queremos es que al pulsar el botón de borrado siempre se borre el texto del UITextField seleccionado bastará con devolver un TRUE.

Como ya comenté en el anterior artículo, iré subiendo el código al siguiente enlace de GitHub
https://github.com/ManuelManzanera/FormularioViewController

miércoles, 24 de junio de 2015

Crear un formulario en iOS nivel PRO con UITextField. Parte I.

En este artículo voy a explicar como crear un formulario para introducir diferentes tipos de datos. El componente principal de cualquier formulario de entrada de datos en iOS será el UITextField. Y que mejor manera de explicarlo que a través de un ejemplo que subiré a GitHub. Lo primero que haremos será crear el UITextField, inicializarlo e indicarle a nuestro view controller que será el delegado del UITextField.

nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(10.,30., 300., 30.)];
[nameTextField setDelegate:self];

A continuación editaremos algunos elementos gráficos del UITexField. Por defecto tiene cuatro tipos de borde, aunque en próximos artículos explicaré como aumentar estas posibilidades a infinito. También le indicaremos el botón de retorno y el tipo de aspecto que queremos que tenga el teclado.

[nameTextField setBorderStyle:UITextBorderStyleNone];
[nameTextField setReturnKeyType:UIReturnKeyDone];
[nameTextField setKeyboardAppearance:UIKeyboardAppearanceDark];


 



También le indicamos un valor por defecto para indicar qué queremos que se introduzca en el UITextField. Este valor no indica que el UITextField tenga texto por defecto. De hecho, si hiciéramos un log con el valor de texto o el tamaño de la cadena del texto, no nos devolvería nada o nos devolvería cero.

[nameTextField setPlaceholder:@"Nombre de usuario"];

Para poder analizarlos métodos del delegado e ir siguiendo las mejoras del código lo iré subiendo todo al siguiente repositorio de GitHub

https://github.com/ManuelManzanera/FormularioViewController

miércoles, 10 de junio de 2015

¿Cómo hacer una captura de pantalla de nuestro dispositivo iOS con Xcode?

Lo primero que os preguntaréis algunos es para qué puedo necesitar hacer una captura de la pantalla de mi dispositivo iOS con Xcode desde el MAC. Si pensáis en desarrollar una App, una de las condiciones indispensables para subirla al AppStore, es ofrecer imágenes de la App. Es cierto que si contáis con buenos diseñadores probablemente ellos os las prepararán desde su mockup. Pero si este no es el caso, una buena opción es mostrar las capturas de pantalla de la App. También sirve de gran utilidad para mostrarle a un cliente cómo queda algún recurso, etc. Las podréis utilizar para crear documentación o para cualquier cosa que se os ocurra.

- Lo primero que debéis hacer es abrir Xcode con un dispositivo iOS conectado y pulsad sobre Windows>Devices. Os deberá aparecer una ventana como la que muestro a continuación.



- Posteriormente solo tendréis que pulsar sobre el botón "Take screenshot" para que os aparezca la captura de la pantalla del dispositivo en vuestro escritorio.





jueves, 4 de junio de 2015

¿Cómo grabar un CD de datos en MAC?

El artículo de hoy no está relacionado con iOS pero sí con MacOS. Mucha gente me pregunta qué es necesario para poder grabar un CD-DVD con archivos en un Mac. La primera respuesta aunque parezca una obviedad es tener una unidad de disco, ya que los MacBook Air no la tienen. Si tu Mac tiene unidad de disco tan sólo tienes que seguir estos sencillos pasos.

1. Introduce el CD-DVD en la unidad de disco. No te asustes si suena como una nave espacial. Para mí, lo que menos me gusta de los Mac es el sonido al introducir o sacar un disco en la unidad de discos.

2. Seleccionas el Finder->Archivo->Nueva Carpeta de Grabación.

3. Copias en la carpeta de grabación (es reconocible por su icono de "Peligro Radioactividad") los archivos que quieras grabar.




4. Por último pulsas el botón de grabar arriba a la derecha.


Y ya está. Así de sencillo es grabar un CD-DVD con archivos en un MAC sin necesidad de descargar ningún software.