Xamarin - Come livellare la vista sopra un'altra, come la tastiera
Domanda
Ho un UI personalizzato che voglio mostrare come la tastiera quando un utente fa clic su una parte dello schermo.Ho visto esempi comunque che fanno riferimento ai metodi di riferimento di UIView che non sembrano esistere (forse è perché ho la licenza di avviamento?) Ad esempio, UIView.Beginanimations non c'è.
Qualcuno ha uno Xamarin (I.e. Monotouch) Esempio?
Voglio che il mio pezzo dell'interfaccia utente da mostrare, e per scorrere la vista esistente in modo che il campo sia correttamente visibile.
Soluzione
UITextView
e UITextField
hanno proprietà inputView
, che consente di ottenere esattamente ciò di cui hai bisogno.Impostare la vista, impostalo come vista in ingresso e una volta che l'utente effettua una vista di testo o un campo di testo Primo responder, apparirà la tua vista.IOS7 ha una classe generacodictagcode, che è possibile sottoclasse, per ottenere una vista di sfondo simile come la tastiera.
Altri suggerimenti
Perché non crei la tua vista e mettilo fuori dalla vista visibile.Quando vuoi mostrarlo, spostalo solo nell'area visibile.In questo modo puoi anche aggiungere l'animazione.
NSLayoutConstraint *yourHiddenViewYConstraint;
- (void)viewDidLoad
{
[self.view addSubView:yourHiddenView];
[yourHiddenView setHidden:YES];
UIView *selfView = self.view
yourHiddenView.translatesAutoresizingMaskIntoConstraints = NO;
// add your needed constraints, other than the one below
yourHiddenViewYConstraint = [NSLayoutConstraint constraintWithItem:yourHiddenView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:selfView
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0];
[selfView addConstraint:yourHiddenViewYConstraint];
yourHiddenViewYConstraint.constant += self.view.frame.size.height;
}
.
Per mostrarlo quando necessario:
- (void)showView
{
[yourHiddenView setHidden:NO];
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self changeConstraint:yourHiddenViewYConstraint withConstant:-self.view.frame.size.height];
});
}
- (void)changeConstraint:(NSLayoutConstraint *)constraint withConstant:(CGFloat)constant
{
constraint.constant += constant;
void (^anim)(void) = ^{
[self.view layoutIfNeeded];
};
[UIView animateWithDuration:0.5 animations:anim completion:nil];
}
.