2010-09-17 16 views
9

ho orizzontale UIScrollView che è esteso da UIScrollView e ho aggiunto UIButtons in orizzontale. Posso solo scorrere fuori dall'area dei pulsanti, ma se voglio scorrere su qualsiasi pulsante viene attivato l'evento UIControlEventTouchUpInside. Non voglio questo. Voglio far scattare l'azione UIControlEventTouchUpInside se clicco e voglio scorrere se faccio scorrere.passa l'evento di scorrimento da uibutton a uiscrollview

così come posso passare l'evento di scorrimento da UIButton a UIScrollView?

+0

Sarebbe di grande aiuto se si creasse un semplice esempio di codice per illustrare cosa si sta facendo, perché nel semplice caso di aggiungere un UIButton a un UIScrollView, è possibile trascinare la posizione della vista di scorrimento intorno anche se si è avviato l'evento di tocco su un pulsante. – Yetanotherjosh

risposta

0

Se sottoclasse NSButton e rendere il vostro tasto di quel tipo e sovrascrivere il seguente nella sottoclasse è possibile passare gli eventi di nuovo alla vista primaria, nel tuo caso la vista di scorrimento

Il seguente renderebbe il pulsante mai attivare un evento e invece tutto sarebbe trattati dalla vista padre:

- (void)touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event { 
    [self.nextResponder touchesBegan:touches withEvent:event];  
} 

- (void)touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event { 
    [self.nextResponder touchesMoved:touches withEvent:event]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent*)event 
{ 
    [self.nextResponder touchesEnded:touches withEvent:event]; 
} 

Se si vuole avere l'affare pulsante con uno di quegli eventi utilizzare invece

[super touchesEnded:touches withEvent:event]; 
+0

Ho provato questo ma non ha funzionato. Il motivo è che UIScrollView non risponde ai tocchi. Inizia, tocca Sposta e tocca Eventi scaduti. Ho sottoclasse UIScrollView per confermare che stava ricevendo questi eventi, ma non facendo nulla con loro. In alternativa al passaggio degli eventi di tocco, puoi calcolare il cambiamento di posizione nei tocchi spostati e modificare la proprietà contentOffset della vista di scorrimento, ma questo non ti dà alcuno spostamento o inerzia del normale comportamento di scorrimento. – arlomedia

3

che la funzionalità è già integrata. Quando si rileva un elemento UIControl come visualizzazione secondaria di una vista di scorrimento e viene rilevato un evento di tocco, questo viene inizialmente passato a UIScrollView. SE, dopo un momento o due non c'è stato movimento sufficiente nell'evento tattile, esso viene trasmesso al pulsante.

+0

Volevo che i miei pulsanti fluttuassero sopra il contenuto scorrevole in una posizione fissa, invece di spostarsi con il contenuto come farebbero se fossero subviste della vista di scorrimento. Ma non riuscivo a far scorrere correttamente gli eventi touch con qualsiasi altro approccio, quindi ho provato questo approccio e raggruppato tutti i miei pulsanti in una vista che è una sottoview della vista di scorrimento. Sto mantenendo quella vista sopra il contenuto visibile impostando il suo frame.origin.x in modo che corrisponda al contenutoOffOffice.x della scroll ogni volta che si scorre il contenuto, come rilevato dal metodo delegate scrollViewDidScroll. Che funzioni! – arlomedia

0

Prova questa:

self.button.exclusiveTouch = YES 

funzionato come un fascino per me!

4

Sottoclasse UIScrollView, ritorno SI nel metodo - touchesShouldCancelInContentView:.

+0

Grazie mille! :] – Jerome

Problemi correlati