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:
Publicar un comentario