2012-01-25 30 views
16

Ho una barra degli strumenti e vorrei posizionarla sulla parte superiore della tastiera.Aggiunta di una barra degli strumenti sulla tastiera superiore

Nella notifica keyboardwillshow, ho provato ad aggiungere barra degli strumenti per la tastiera, ma senza fortuna, non posso aggiungo

prega fatemi sapere

UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1]; 
    UIView* keyboard; 
    for(int i = 0; i < [tempWindow.subviews count]; i++) 
    { 
     //Get a reference of the current view 
     keyboard = [tempWindow.subviews objectAtIndex:i]; 

     //Check to see if the description of the view we have referenced is "UIKeyboard" if so then we found 
     //the keyboard view that we were looking for 
     if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) 
     { 
      [keyboard addSubview:myToolbar]; 
     } 
    } 
+0

Cosa hai provato? –

+0

hai provato qualcosa? – Sarah

risposta

44

credo, si desidera un inputAccessoryView.

Fondamentalmente, si crea una vista e si imposta come vista accessi di input di una vista di campo o di testo.

[textField setInputAccessoryView:inputAccessoryView]; 
+0

Questo link non è corretto (404) –

+0

Divertente, poche ore fa esisteva. – vikingosegundo

+0

L'ho risolto. Dare un'occhiata. – vikingosegundo

14

Ecco il codice nel caso in cui qualcun altro necessità it.Found su Stack Overflow

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)]; 
    numberToolbar.barStyle = UIBarStyleBlackTranslucent; 
    numberToolbar.items = [NSArray arrayWithObjects: 
         [[UIBarButtonItem alloc]initWithTitle:@"Clear" style:UIBarButtonItemStyleBordered target:self action:@selector(clearNumberPad)], 
         [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
         [[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)], 
        nil]; 
    [numberToolbar sizeToFit]; 
    numberTextField.inputAccessoryView = numberToolbar; 
} 



-(void)clearNumberPad{ 
    [numberTextField resignFirstResponder]; 
    numberTextField.text = @""; 
} 

-(void)doneWithNumberPad{ 
    NSString *numberFromTheKeyboard = numberTextField.text; 
    [numberTextField resignFirstResponder]; 
} 
3

https://github.com/asefnoor/IQKeyboardManager

Questo è il miglior gestore di tastiera che ho visto. Ottimo modo per gestire gli input di testo.

Alcune delle sue caratteristiche 1) ZERO riga di codice

2) funziona automaticamente

3) No More UIScrollView

4) No More sottoclassi

5) Lavoro No More Manuale

6) No More #imports

1

Soluzione semplice per iOS 8 e 9.

Init tua textField, searchBar ecc

customView - View che si attacchi alla parte superiore della tastiera. Non aggiungerlo come sottomissione alla gerarchia! Non è necessario impostare alcun vincolo o posizione.

[searchBar setInputAccessoryView:self.customView]; 

- (BOOL)canBecomeFirstResponder{ 
    return true; 
} 

- (UIView *)inputAccessoryView { 
    return self.customView; 

} 

Se è necessario lasciare che il CustomView in fondo e non nasconderlo dopo che respinge la tastiera, aggiungere osservatore:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:self.view.window]; 

e il metodo

- (void)keyboardDidHide:(NSNotification *)notification { 
    [self becomeFirstResponder]; 
} 
1

se si desidera per aggiungere la barra degli strumenti sulla tastiera, hai ragione. Puoi usare BSKeyboard in modo semplice. Guarda l'implementazione qui sotto;

nel file h

#import "BSKeyboardControls.h" 

aggiungere delegati

@interface ViewController : UIViewController <BSKeyboardControlsDelegate> 

ora saltano il file .m, vanno a viewDidLoad.Aggiungeremo campo di testo che voglio aggiungere tollbar

self.keyboardControls = [[BSKeyboardControls alloc] initWithFields:@[PINTextField]]; 
[self.keyboardControls addDelegate:self]; 

dovremmo aggiungere activeField proprio come qui di seguito,

- (void)textFieldDidBeginEditing:(UIView *)textField { 
    [self.keyboardControls setActiveField:textField]; 
} 

E ultimo passo è delegare metods implemantation,

- (void)keyboardControlsDonePressed:(BSKeyboardControls *)keyboardControls { 
    [super textFieldShouldReturn:self.keyboardControls.activeField]; 
} 

Questo è tutto.

Per ulteriori informazioni e scaricare i file BSKeyboard, è possibile spostare sul link qui sotto BSKeyboard Githup Link

Problemi correlati