2012-09-05 10 views
6

Una pregunta realmente simple aquí. ¿Cómo se crea una vista como esta? enter image description hereCrear vista de superposición de clics ver

Tiene que superponerse la primera vez que el usuario ejecuta esta parte de la aplicación y se elimina para siempre una vez que el usuario toca en ella. Entiendo que debería ser un UIImageView, pero ¿cómo lo activa y luego lo elimina de la vista para siempre?

Respuesta

9

Puede agregar su subvista justo después del inicio de su aplicación en el método didFinishLaunchingWithOptions de su delegado de la aplicación mediante el método addSubView de la clase UIView. Éstos son algunos fragmentos de código de cómo se podría proceder:

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    UIImageView *imageView = [[UIImageView alloc] 
    initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
    [self.window addSubview:imageView]; 

    UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
    recognizer.delegate = self; 
    [imageView addGestureRecognizer:recognizer]; 
    imageView.userInteractionEnabled = YES; 
    self.imageView = imageView; 
} 

- (void) handleTap:(UITapGestureRecognizer *)recognize 
{ 
    [self.imageView removeFromSuperView]; 
} 

Tenga en cuenta que se necesita una propiedad para hacer referencia a su imageView en el método handleTap.

+0

Gracias, hombre! Funciona como encanto! –

+0

Obtuve "Asignando a 'id ' del tipo incompatible 'AppDelegate *'" - ¿algún consejo? ¡Gracias! – Ernest

+0

necesita hacer que su AppDelegate cumpla con el UIGestureRecognizerDelegate al declarar algo como esto: yourAppDelegate() tiguero

1

Mis pensamientos serían establecer una variable NSUserDefault y verificarlo en applicationDidFinishLaunchingWithOptions o en otro lugar en su aplicación que tenga sentido. Podrías simplemente empujar una vista separada cuando tu variable sea verdadera vs. falsa.

4

UIView tiene todos los métodos que necesita, p.

  • llamada [myView addSubview:imgView] para agregar la vista de la imagen a la vista actual (myView)
  • llamada [imgView removeFromSuperview] cuando termine (es decir, en responder a puntear o después de un temporizador)

Asegúrese userInteractionEnabled propiedad de imgView a NO para que los toques pasen a myView.

+0

¿por qué no tener la subView manejando el tap? – tiguero

+1

Puede hacerlo, pero la pregunta requiere un comportamiento de "clic", por lo que supongo que el póster preferiría tener la vista de fondo para manejar los toques. –

+0

bien, su título es engañoso. Sin embargo, mencionó: "Tiene que superponerse la primera vez que el usuario ejecuta esta parte de la aplicación y se eliminará para siempre una vez que el usuario la toque", por lo que obviamente quiere que el toque ocurra en la vista de superposición – tiguero

Cuestiones relacionadas