2012-10-28 10 views
6

Vedo che alcune app stanno estendendo la tastiera ma mi piacerebbe sapere come lo fanno.Come estendere il gradiente della tastiera su iPhone?

Qui ci sono 2 esempi.

Textastic & Prompt

Ora so che posso aggiungere inputAccessoryView per UITextView ma ha ancora piccola linea sottile che separa la tastiera da UIToolbar come sull'immagine qui sotto.

enter image description here

come lo fanno? Estendendo UIWindow che mantiene la tastiera o in qualche altro modo?

Update 1 con risposta:

soluzione Così ho usato che Tyraz scritto.

  1. sottoclasse UIToolbar
  2. Invece di immagine ho usato UIView con sfondo stesso del colore finitura del gradiente tastiera e con UIViewAutoResizingMaskFlexibleWidth modo tale da coprire la tastiera quando viene ruotato, con altezza di 3 pixel

Ecco il codice per la sottoclasse UIToolbar

- (void)didMoveToSuperview { 

    [self.separatorHideView removeFromSuperview]; 

    CGRect seperatorRect = CGRectMake(self.frame.origin.x, 
             self.frame.size.height, 
             self.frame.size.width, 
             3.0); 

    self.separatorHideView = [[UIView alloc]]; 
    self.separatorHideView.backgroundColor = [UIColor colorWithRed:0.569 green:0.600 blue:0.643 alpha:1.000]; 
    self.separatorHideView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self addSubview:self.separatorHideView]; 
} 

Aggiornamento 2: Ecco il codice come sto aggiungendolo alla UIT extView e che colore sto usando per la tinta.

sto aggiungendo al UITextView in viewDidLoad con codice seguente

CustomToolbar *accessoryToolbar = [[CustomToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 38)]; 
    accessoryToolbar.tintColor = [UIColor colorWithRed:0.569 green:0.600 blue:0.643 alpha:1.000]; 
    editor.inputAccessoryView = accessoryToolbar; 

e questo è come sembra con la soluzione applicata ad esso

enter image description here

+0

hi Amar! In realtà sto cercando di migliorare la mia vista degli accessori di input (ad esempio UIToolbar) per avere lo stesso aspetto descritto qui. Ti dispiacerebbe postare l'esatta impostazione del colore per il colore di sfondo separatorHideView? E come hai tinto l'UIToolbar per avere il gradiente corrispondente per adattarsi alla tastiera?Molte grazie in anticipo! –

+0

Ciao Nenad. Nessun problema. Non so perché il colore non è mostrato nel codice sopra, ma lo aggiusterò. –

+0

Grazie mille! Ha funzionato per me! –

risposta

4

Vorrei provare a utilizzare un inputAccessoryView più una seconda vista che si trova sulla parte superiore della linea di separazione e "colma il divario".

Una volta che inputAccessoryView viene aggiunto alla tastiera (sovrascrivere il metodo didMoveToSuperview nella sottoclasse UIView accessorio per ricevere una notifica quando ciò accade), aggiungerlo alla superview di inputAccessoryView.

dovrebbe essere qualcosa di simile nel vostro accessorio UIView sottoclasse:

- (void)didMoveToSuperview { 
    [self.separatorHideView removeFromSuperview]; 

    CGRect seperatorRect = CGRectMake(self.frame.origin.x, 
            self.frame.origin.y + self.frame.size.height, 
            self.frame.size.width, 
            2.0); 

    UIImage *gapGradient = [UIImage imageNamed:@"GapGradient"]; 
    self.separatorHideView = [[UIImageView alloc]initWithImage:gapGradient]; 
    self.separatorHideView.frame = seperatorRect; 

    [self.superview addSubview:self.separatorHideView]; 
} 

Vorrei anche sovrascrivere SETFRAME nel vostro accessorio UIView sottoclasse di aggiornare il telaio della gapView nel caso in cui la cornice della tastiera viene modificato.

+0

Questa è la soluzione al problema. Aggiornerò la domanda con l'anser. –

6

In iOS 7 è possibile creare un inputAccessoryView per abbinare lo stile tastiera facilmente:

[[UIInputView alloc] initWithFrame:<#frame#> 
        inputViewStyle:UIInputViewStyleKeyboard]; 
Problemi correlati