2010-12-15 9 views
24

Ho usato un foglio di azioni nel mio progetto e quando appare mostra tutti i pulsanti ma l'ultimo (4) pulsante non risponde al mio clic (solo la metà parte risponde) ..ultimo pulsante del foglio delle azioni non viene cliccato

Conosco il motivo per cui ho usato un TabBarController e la classe attuale è all'interno di quel controller di tabbar .... solo quella parte del foglio di lavoro risponde che è sopra le schede .... e il mio ultimo pulsante è la metà sopra e metà è in cima alla barra delle linguette

si prega di aiutare

+0

si prega di inviare il vostro codice, quindi facilmente possiamo aiutare a risolverlo. – jfalexvijay

+0

Non puoi usare nessuno dei metodi showFromTabBar, se stai usando alcuni tabbar personalizzati. stackr dire la risposta alle scommesse! –

+0

@ WinDMak3r - Sì, lo so ed è per questo che ha ottenuto 32 upvotes :) – Saawan

risposta

83

Io suggerisco di usare questo:

[actionSheet showInView:[UIApplication sharedApplication].keyWindow]; 

Ho avuto lo stesso problema che avete e utilizzare questo metodo per mostrare ha funzionato per me. Il TabBar vuole rimanere la finestra chiave che fa apparire il pulsante in basso sopra, ma in realtà è sotto la tabbar.

Spero che questo fa il trucco per voi ..

Modifica

Se si utilizza la modalità paesaggio e il metodo di cui sopra non funziona. È possibile utilizzare la seguente correzione:

@Vinh Tran: [foglio showFromTabBar: self.parentViewController.tabBarController.tabBar]

+0

+1 - Ha funzionato grazie ... – Saawan

+0

Ha funzionato alla grande! Grazie – Ladislav

+0

Works Great Thanks – pa12

3

Quale metodo si usa per mostrare il vostro acti onsheet. Prova showFromTabBar: metodo

+0

Ho usato -------- \t UIActionSheet * actionsheet = [[UIActionSheet alloc]] initWithTitle: @ "Seleziona tipo di feed" delegato: self cancelButtonTitle: nil destructiveButtonTitle: nil otherButtonTitles: @ "first", @ "2nd", @ "3rd", @ "4th", nil]; \t [foglio di azioni showInView: self.view]; \t [rilascio scheda azioni]; – Saawan

+0

prova usando il metodo che ho suggerito invece di showInView :. come ho capito è progettato per gestire esattamente il tuo caso (non l'ho usato io stesso però ...) – Vladimir

+0

secondo il tuo suggerimento ho usato il seguente metodo ...... [foglio delle azioni showFromTabBar: delegate.tabC.tabBar]; ... dove delegato è oggetto della mia classe delegato dove è tabController tabC ............... Ma il mio programma CRASHED .... – Saawan

0

Il vero problema arriva quando l'interfaccia viene ruotato al paesaggio e la controller della vista genitore ha una trasformazione su di esso. Credimi, è uno scenario realistico, doh. Quindi il foglio azione viene troncato e non è possibile utilizzare parentViewController perché viene trasformato. La soluzione per evitare tutti questi problemi è creare una nuova finestra, aggiungere un controller di visualizzazione ruotabile come rootViewController e utilizzare la sua vista per visualizzare il foglio.

CGRect applicationRect = [[UIScreen mainScreen] bounds]; 
UIWindow* actionSheetWindow = [[UIWindow alloc] initWithFrame:applicationRect]; 
RotationViewController* rootViewController = [[RotationViewController alloc] initWithNibName:nil bundle:nil]; 
actionSheetWindow.rootViewController = rootViewController; 
[rootViewController release]; 
actionSheetWindow.hidden = NO; 

UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:nil]; 
[actionSheet setCancelButtonWithTitle:@"Cancel" handler:^{ 
    actionSheetWindow.hidden = YES; 
    [actionSheetWindow release]; 
}]; 

[actionSheet showInView:rootViewController.view]; 

Il codice precedente utilizza BlocksKit, ma è possibile farlo anche usando il delegato e dell'istanza proprietà actionSheet.

RotationViewController è solo una sottoclasse UIViewController che implementa

- (void) viewDidLoad { 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor clearColor]; 
    self.view.opaque = NO; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 
Problemi correlati