He hecho una sencilla aplicación en la que estoy de carga diferentes .xib en cada orientación,

Tengo dos xib del Portxib y Landxib, en tanto xibs, me arrastró a un botón y se le asigna un

valor de la etiqueta como 1 en tanto xib.

y escribí este código en mi viewDidLoad

UIButton *btn=(UIButton *)[self.view viewWithTag:1];
    [btn addTarget:self action:@selector(BtnClick:) forControlEvents:UIControlEventTouchUpInside];

aquí está el selector de método,

-(void)BtnClick:(id)sender
    {
        NSLog(@"BtnClick");
    }

Evento Click de UIButton es no ser despedido…

O

¿Hay alguna otra forma de llamar el mismo método de botón de tanto la orientación ??

EDICIÓN :

.h file

Haga clic en evento de UIButton es no ser despedido
.m file
Haga clic en evento de UIButton es no ser despedido

usted puede tratar de añadir el código en willAnimateRotationToInterfaceOrientation para obtener dispararon en ambas orientaciones
Puede probar mi respuesta a la llamada de un mismo método de tanto XIB.
es su botón de clic evento que se activa en cualquier orientación ?? ya sea en horizontal o vertical ??
no.. no es ser despedido, no he creado ninguna toma o acción de conexión utilizando la combinación de teclas ctrl+arrastrar) en mi .h archivo uso de archivo propietario en xib.. porque me estoy dando el nombre del objeto de botón a través de la etiqueta de propiedad,no estoy seguro, pero creo que no me equivoco..
sí, Usted puede conectar IBAction evento de botón. De esa manera es trabajando…

OriginalEl autor Krunal | 2013-03-21

3 Comentarios

  1. 6

    Asegúrese de que…

    1. Botón se coloca en la raíz de ver en xib como usted está encontrando en self.view O asegúrese de que se coloca en el punto de vista correcto y el uso que ver con viewWithTag
    2. Ha asignado la etiqueta 1, así que asegúrese de que ningún otro control dentro de
      misma opinión tiene de la etiqueta 1 otros sabios botón no será reconocido por la etiqueta. Si este va a ser tu caso, entonces simplemente cambiar la etiqueta de botón a muy inusual número para que ver como 999 o cualquier otra cosa y de prueba.

    EDITAR

    Me estoy sintiendo como que la vista no es ser reconocidos en viewDidLoad donde usted tiene la configuración de su código. Tan sólo comentar que el código en viewDidLoad y de cambio en su changeOrientation método después de la carga de punta.

    -(void)changeOrientation
    {
        UIInterfaceOrientation orientation =  [[UIApplication sharedApplication] statusBarOrientation];
    
    
        if(orientation==UIInterfaceOrientationPortrait || orientation==UIInterfaceOrientationPortraitUpsideDown)
        {
            [[NSBundle mainBundle] loadNibNamed:@"PortraitXib" owner:self options:nil];
        }
        else 
        {
            [[NSBundle mainBundle] loadNibNamed:@"LandscapeXib" owner:self options:nil];
        }
    
        //Adding this code here makes sense that nib is loaded and after that we are recognizing button from loaded view of nib.
        UIButton *btn = (UIButton*)[self.view viewWithTag:1];
        [btn addTarget:self action:@selector(BtnClick:) forControlEvents:UIControlEventTouchUpInside];    
    }

    Espero que esto ayude.

    He creado la clase sin xib y añadió dos xib uno para la orientación vertical y otro horizontal, en tanto el xib hay un botón con la misma etiqueta.. pero aún así, haga clic evento es no ser despedido..
    Preguntando por usted para asegurarse de no tener ningún otro control en xib con la etiqueta 1, excepto que su botón.
    sí sólo botón tiene la etiqueta 1
    A continuación, asegúrese de que acerca de la vista principal de el botón. si está bajo la directa raíz de vista, a continuación, el código de trabajo. si está dentro de algún otro punto de vista, entonces no la reconoce.
    Por favor, mira mi respuesta actualizada y probar este. He probado el código que no funciona, he cambiado el código dentro de changeOrientation y ahora funciona 🙂

    OriginalEl autor βhargavḯ

  2. 5

    En el archivo de encabezado agregar

    IBOutlet UIButton *btn;

    referencia a este btn de su xib archivos.

    Aquí en su caso, el btn usted está usando no es la que se hace referencia desde el xib archivos por lo que el método no es el disparo de

    -(IBAction)BtnClick:(id)sender
    {
        NSLog(@"BtnClick");
    }

    hacer la función como IBAction y referencia de punta btn.
    En este caso no hay necesidad de addtarget explícitamente.

    Si no va a añadir el botón en la punta, entonces no te olvides de init y addsubview a la vista

    Puedes ver este tutorial http://www.idev101.com/learn/interface_builder_connections.html

    EDITAR Comprobar cuál es la impresión?

         for (UIButton *but in [self.view subviews])
         {
                NSLog("but.tag %d",but.tag);
                if(but.tag==1)//compare for same row elements
                {
                NSLog("Button Added");
    
                  [btn addTarget:self action:@selector(BtnClick:) forControlEvents:UIControlEventTouchUpInside];
                }
          }
    muestra el registro de btn.la etiqueta es 1 y muestra Button Added pero todavía evento click es no ser despedido.. 🙁

    OriginalEl autor Cintu

  3. 0

    Puede agregar un botón como este.
    Agregue esto a usted didLoad método

     UIButton* aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
      [aButton setTag:1];
      [aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
      [aView addSubview:aButton];
    }
    
    //then ...
    
    - (void)buttonClicked:(UIButton*)button
    {
      NSLog(@"Button %d clicked.", [button tag]);
    }

    OriginalEl autor Spire

Dejar respuesta

Please enter your comment!
Please enter your name here