2012-02-07 21 views
7

Ho aggiunto un UIToolBar con un UIBarButtonItem come inputAccessoryView per un UITextView. Funziona bene, ma UIBarButtonItem è visualizzabile all'esterno del frame, forse 50 pixel all'esterno a destra. Non è un grosso problema ma mi infastidisce. Qualcuno sa perché?iOS - UIToolBar come inputAccessoryView per UITextView

Questo è il mio codice (ARC):

UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)]; 
toolBar.barStyle = UIBarStyleBlack; 
toolBar.translucent = YES; 

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneWriting:)]; 
[toolBar setItems:[NSArray arrayWithObjects:doneButton, nil]]; 

self.messageTextView.inputAccessoryView = toolBar; 

risposta

2

La barra degli strumenti sembra per espandere l'area attiva dei pulsanti oltre i loro limiti, se non ci sono altri pulsanti vicine nella barra degli strumenti. Gli ingegneri Apple devono pensare che è meglio cercare di indovinare dove l'utente intendesse premere piuttosto che non reagire affatto.

+0

Se è così, per me sembra più una programmazione "sciatta" con il pulsante che reagisce fuori dai suoi limiti, vabbè. –

7

In iOS 6 sembra comportarsi come previsto. Nizza suggerimento: se si desidera che il pulsante appaia a destra invece che a sinistra, utilizzare uno di questi:

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

Poi inizializzare la barra degli strumenti con:

[toolBar setItems:[NSArray arrayWithObjects:flexibleSpace, doneButton, nil]]; 
2

Spero che ti aiuta. ..

UIToolbar* keyboardDoneButtonView = [[UIToolbar alloc] init]; 
[keyboardDoneButtonView sizeToFit]; 

UIBarButtonItem* PrevButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:105 target:nil action:nil]; //< 
UIBarButtonItem* NextButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:106 target:nil action:nil]; //> 
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(doneClicked:)]; 

UIBarButtonItem* flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem *fake = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] ; 

[keyboardDoneButtonView setItems:[NSArray arrayWithObjects: PrevButton,fake, NextButton,fake,flexSpace,fake,doneButton,nil] animated:YES]; 

Usa falso Item per ottenere esatta ubicazione pizzico sul pulsante ...

+0

soluzione molto interessante, questa ha funzionato per me, grazie. – carlos16196

Problemi correlati