2013-03-11 1 views
6

enter image description herePulsante di navigazione che fa scattare l'evento quando si fa clic sull'area sottostante.

Sto visualizzando la barra di navigazione con visualizzazione personalizzata come elemento della barra destra. La visualizzazione personalizzata ha due pulsanti. Ma quando tocchi l'area sotto la barra di navigazione sul lato destro, si accende l'evento di tocco del pulsante. Ho controllato i fotogrammi dei pulsanti e la vista cambiando il colore di sfondo sono tutti impostati perfettamente. Ho controllato le app iOS predefinite come l'orologio, il calendario, le impostazioni, le note ecc. Tutte hanno lo stesso comportamento. Toccando nel rettangolo rosso in screenshot (di inadempienza iOS app calendario.) Spara tocco caso di tasto stesso sta accadendo con la mia app troppo ..

Ecco il codice ..

UIView* navigationButtonsView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 44.0f)]; 

UIButton *p = [UIButton buttonWithType:UIButtonTypeCustom]; 
[p setImage:[UIImage imageNamed:@"PBtn.png"] forState:UIControlStateNormal]; 
[p addTarget:self action:@selector(PButtonPushed:) forControlEvents:UIControlEventTouchUpInside]; 
[p setFrame:CGRectMake(43, 0, 57, 44)]; 
[navigationButtonsView addSubview:p]; 

UIButton *o = [UIButton buttonWithType:UIButtonTypeCustom]; 
[o addTarget:self action:@selector(oButtonPushed:) forControlEvents:UIControlEventTouchUpInside]; 
[o setFrame:CGRectMake(0, 0, 38, 44)]; 
[o setImage:[UIImage imageNamed:@"O.png"] forState:UIControlStateNormal]; 
[navigationButtonsView addSubview:o]; 

UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:navigationButtonsView]; 
[musicVC.navigationItem setRightBarButtonItem: barItem animated:NO]; 

Come cambiare questa impostazione predefinita iOS comportamento per i pulsanti della barra di navigazione? Perché avere alcune UI proprio sotto questi pulsanti e la loro area superiore non risponde a causa di questo. Grazie in anticipo ..

risposta

1

Questo è un comportamento normale - due ragioni:

  1. iOS non sa quanto è grande il tuo dito è - quindi deve decidere dove mettere il tocco. In questo caso, la barra di spostamento sovrascrive la vista tabella.

  2. Questo potrebbe avere qualcosa a che fare con le linee guida dell'interfaccia umana (mi dispiace, nessun link. Google) che dice che l'area minima da toccare deve essere di 44px. Questo comportamento potrebbe essere "UIBarButtonItem" che tenta di conformarsi a questi requisiti.