sábado, 6 de octubre de 2012

Cosas basicas sobre XCode.




Guía de pequeños trucos en XCode.

Para hacer que desaparezca el teclado en un TexField:

Creamos una accion y llamamos al sendero de la función y le decimos que deje de ser el primero que responde.
Luego conectamos la función con Did end on Exit y al tocar en la tecla Return el teclado desaparece.

-(IBAction)escoderTeclado:(id)sender
{
    [sender resignFirstResponder];
}


Para hacer desaparecer el teclado en las vista de texto usaremos esto:
En este caso con la tecla Return subimos una linea y para ocultar el teclado hacemos tap en cualquier parte.
Escribir esto en el viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer *reconoceTap =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleBackgroundTap:)];
                                                                                                             
    reconoceTap.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:reconoceTap];
        
}

 Y luego creas este metodo:(VistaTexto seria el nombre que le hemos dado al objeto vistaDeTexto.):
También se podría aplicar a los UITextField. 

-(void)handleBackgroundTap:(UITapGestureRecognizer *)sender
{
    [vistaTexto resignFirstResponder];
}


Enviar Mensaje de Twitter con una imagen:
Añadimos al proyecto el Framework Social.framework
Lo importamos al proyecto y añadimos al proyecto la imagen que queremos enviar.

Con este primer metodo le estamos diciendo que si la conexión es posible nos envíe el Tweet.

- (IBAction)twitter:(id)sender
{
  
      if (SLComposeViewControllerResultDone)

    {
        SLComposeViewController *tweet=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
    
        [tweet setInitialText:@"Prueba del Twitter"];
        UIImage *imagenTwitter =[UIImage imageNamed:@"iconoforo.jpg"];
        [tweet addImage:imagenTwitter];
        [self presentViewController:tweet animated:YES completion:Nil];
    }
}

Y esta acción la usamos para ver si es posible la conexión y nos salta una alerta que nos avisa si es posible o si no lo es.

- (IBAction)servicioDisponible:(id)sender
{
    if (SLComposeViewControllerResultCancelled)
    {
        UIAlertView *alertaServicio =[[UIAlertView alloc]initWithTitle:@"ATENCION" message:@"Imposible enviar Twitter" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertaServicio show];
    }
        else
        {
            UIAlertView *alertaServicioCorrecto =[[UIAlertView alloc]initWithTitle:@"¡¡Perfecto!!" message:@"Es posible enviar Twitter" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertaServicioCorrecto show];
        }
        
    
    return;
}


Para comprobar si se a escrito algo en el UITextField:

Contrasenya y nombreUsuario son dos UITextField, con la sentencia length comprobamos su longitud y si esta es igual a cero no salta la alerta o podríamos crear otra electa indicando que el campo de texto esta vacío.

- (IBAction)Entrar:(id)sender
{
    NSString *paswor=[[NSString alloc]init];
    paswor=contrasenya.text;
    
    NSString *nombreUser =[[NSString alloc]init];
    nombreUser=nombreUsuario.text;

    int length =[nombreUser length];
    int paswor2 =[paswor length];

    if (length==0 | paswor2==0)
        return;
    NSString *mensajeAlerta =[NSString stringWithFormat:@"Bienvenido %@",nombreUser];
    
    
    UIAlertView * alerta =[[UIAlertView alloc]initWithTitle:@"Usuario Aceptado" message:mensajeAlerta delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    
    [alerta show];
    
    
    
}


Crear una alerta con varias opciones y saber cual de las opciones a sido pulsada:
Primero con UIAlertView.

- (IBAction)crearAlerta:(id)sender
{
    UIAlertView *alerta=[[UIAlertView alloc]initWithTitle:@"Alerta creada" message:@"Varias Opciones" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:@"Opcion 1",@"opcion 2",@"Opcion 3", nil];
    [alerta show];
    
}

-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex== alertView.cancelButtonIndex)
    {
        NSLog(@"Pulsado el boton de Cancelar o OK");
    }
    else if (buttonIndex==alertView.firstOtherButtonIndex)
    {
        NSLog(@"Se a pulsado el primer Boton");
    }
    else if (buttonIndex==alertView.firstOtherButtonIndex +1)
    {
        NSLog(@"Pulsado el segundo Boton");
    }
    else if (buttonIndex==alertView.firstOtherButtonIndex +2)
    {
        NSLog(@"Pulsado el tercer boton");
    }
    
}

Ahora veremos el mismo ejemplo pero con el botón rojo(destructivo):
Aqui usaremos el UIActionSheet.
Tenemos que añadir el protocolo <UIAlertViewDelegate>.
- (IBAction)botonRojo:(id)sender
{
    UIActionSheet *botonRojo =[[UIActionSheet alloc]initWithTitle:@"Con el Boton Rojo" delegate:self cancelButtonTitle:@"Salir" destructiveButtonTitle:@"Borrar todo" otherButtonTitles:@"Opcion 1",@"Opcion2", nil];
    
    [botonRojo showInView:self.view];//Observamos que la forma de llamarlo es diferente
}

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex== actionSheet.cancelButtonIndex)
    {
        NSLog(@"Pulsado el boton de Cancelar o OK");
    }
    else if (buttonIndex==actionSheet.destructiveButtonIndex)
    {
        NSLog(@"Pulsado el boton rojo");
    }
    else if (buttonIndex==actionSheet.firstOtherButtonIndex)
    {
        NSLog(@"Se a pulsado el primer Boton");
    }
    else if (buttonIndex==actionSheet.firstOtherButtonIndex +1)
    {
        NSLog(@"Pulsado el segundo Boton");
    }
    else if (buttonIndex==actionSheet.firstOtherButtonIndex +2)
    {
        NSLog(@"Pulsado el tercer boton");
    }
}

Alerta con entrada de texto del Usuario:
Muestra el nombre introducido en la propiedad text de una Label.

- (IBAction)entradaUsuario:(id)sender
{
    UIAlertView *conEntrada =[[UIAlertView alloc]initWithTitle:@"Cual es su nombre?:" message:nil delegate:self cancelButtonTitle:@"Aceptar" otherButtonTitles:nil];
    conEntrada.alertViewStyle =UIAlertViewStylePlainTextInput;
    [conEntrada show];
    
}
-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    UITextField *field1 =[alertView textFieldAtIndex:0];
    verNombre.text=[NSString stringWithFormat:@"Nombre: %@",field1.text];
}




Métodos que se ejecutan en el AppDelegate.m, según en estado se encuentre la aplicación.



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"Aqui es en el Bool");
    //Este siempre se ejecuta al iniciar la aplicación.
    //Solo se ejecuta si la app esta cerrada totalmente
    return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
   NSLog(@"Aqui es en el applicationWillResignActive");
    //Este se ejecuta cuando cerramos la aplicación con boton Home.

}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSLog(@"Aqui es en el applicationDidEnterBackground");
    //Esta se ejecuta cuando pasa a segundo plano.
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"Aqui es en el applicationWillEnterForeground");
    //Se ejecuta Cuando vuelve del segundo plano.
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSLog(@"Aqui es en el applicationDidBecomeActive");
    //Este se ejecuta cuando se inicia la aplicación y esta a la espera.
    //Tambien cuando vuelve desde segundo plano y se queda a la espera de algún evento.
     
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    NSLog(@"Aqui es en el applicationWillTerminate");
    //Este se ejecuta al cerrar definitivamente la aplicación.

}

Crear una animación:
animacionImagen seria el nombre del UIImage donde se reproducira la animación.

 NSArray *animacionArray=[[NSArray alloc]initWithObjects:
                            [UIImage imageNamed:@"anim1.png"],
                            [UIImage imageNamed:@"anim2.png"],
                            [UIImage imageNamed:@"anim3.png"],
                            [UIImage imageNamed:@"anim4.png"],
                            [UIImage imageNamed:@"anim5.png"],
                            [UIImage imageNamed:@"anim6.png"],nil];
    
    animacionImagen.animationImages=animacionArray;
    animacionImagen.animationDuration=0.5;
    animacionImagen.animationRepeatCount=1;
    animacionImagen.userInteractionEnabled=NO;
    [animacionImagen setHidden:NO];
    [animacionImagen startAnimating];


Reconoce si se a tocado en una zona de pantalla:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer * tapImagen=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleTap:)];
    tapImagen.cancelsTouchesInView=NO;
    [self.view addGestureRecognizer:tapImagen];
}

-(void)handleTap:(UITapGestureRecognizer *)sender
{
    CGPoint startlocation=[sender locationInView:self.view];
    if ((startlocation.y >= 211) &&  (startlocation.y <=(211 + 104)))
    {
       //Aqui se ejecutaría esto si el usuario toca la zona determinada para detectar las pulsaciones.
    }
}



No hay comentarios: