Domanda

Mi chiedo se qualcuno abbia usato il metodo userInteractionEnabled su un UILabel per consentire all'etichetta di agire come un pulsante (o semplicemente per attivare un metodo). Qualsiasi aiuto sarebbe molto apprezzato. Cheers!

Aggiornamento (30/04/09 @ 1: 07pm) Chiarimento: ho un pulsante Info standard e accanto ad esso voglio posizionare un'etichetta con il testo "Impostazioni". e vorrei che l'etichetta funzionasse come il pulsante (che si sposta su una schermata delle impostazioni. Quindi, fondamentalmente, devo legare lo showSettinsView già definito all'etichetta "infoLabel", un utente fa clic sul pulsante info o infoLabel e sul metodo spara.

L'InfoButton funziona già e utilizza un'IBAction per attivare il metodo. Vorrei sapere come collegare l'etichetta per implementare lo stesso metodo. Questo è tutto. Cheers!

È stato utile?

Soluzione

userInteractionEnabled non è un metodo ma una proprietà. Ma penso che vorrai impostarlo su YES per consentire agli eventi di passare alla superview UIView .

Quello che potresti voler fare è ignorare il touchesBegan: withEvent: del metodo UIView che contiene il tuo UIButton e UILabel visualizzazioni secondarie.

Con questo metodo, verifica se qualcuno dei tocchi UITouch rientra nei limiti di UILabel .

Cioè, l'elemento CGPoint [touch locationInView] si interseca con l'elemento CGRect [limiti infoLabel] ? Esamina la funzione CGRectContainsPoint per eseguire questo test.

In tal caso, disattiva un NSNotification che chiama lo stesso selettore IBAction del UIButton .

Altri suggerimenti

Un'altra soluzione potrebbe essere quella di utilizzare un UIButton con il suo tipo impostato su personalizzato, anziché un UILabel . In questo modo il tuo secondo pulsante sembrerà un UILabel e puoi configurarlo per attivare il metodo showSettingsView .

Sono d'accordo con Alex il 30 aprile '09 e la mia proposta è solo un'aggiunta, se non vuoi andare con un UIButton. Il modo in cui l'ho risolto è stato creando un UILabel tramite

- (id)initWithFrame:(CGRect)frame
{
    label = [[UILabel alloc] initWithFrame: CGRectMake(5, 5, 20, 20)];
    ...
    [label setUserInteractionEnabled: YES];
    [self addSubview: label];
}

quindi puoi sovrascrivere i metodi tocchi * come tocchiBegan, tocchiEnded con qualcosa del tipo

- (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event {
      UITouch *touch = [touches anyObject];
      if([touch view] == label) {
          NSLog(@"I've been touched");
       }
   }     
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top