Xamarin - Как наложить вид слоя поверх другого, например клавиатуры

StackOverflow https://stackoverflow.com//questions/22000936

  •  20-12-2019
  •  | 
  •  

Вопрос

У меня есть пользовательский интерфейс, который я хочу показывать как клавиатуру, когда пользователь нажимает на часть экрана.Я видел примеры, однако они ссылаются на методы вне UIView, которые, похоже, не существуют (может быть, это потому, что у меня есть лицензия Starter?), например, UIView.beginAnimations там нет.

Есть ли у кого-нибудь Xamarin (т.е.Пример MonoTouch)?

Я хочу, чтобы моя часть пользовательского интерфейса отображалась и прокручивала существующий вид так, чтобы поле было правильно видно.

Это было полезно?

Решение

UITextView и UITextField иметь inputView свойство, которое позволяет вам достичь именно того, что вам нужно.Настройте представление, установите его в качестве своего вида ввода, и как только пользователь создаст текстовое представление или текстовое поле для первого ответа, появится ваше представление.iOS7 имеет UIInputView класс, который вы можете подклассифицировать, чтобы получить такой же фоновый вид, как у клавиатуры.

Другие советы

Почему бы вам не создавать свой вид и разместить его за пределами видимого вида.Когда вы хотите показать это, вы просто переместите его в видимую область.Таким образом, вы также можете добавить анимацию.

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;
}
.

Чтобы показать его при необходимости:

- (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];
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top