Xamarin - 如何将视图层叠在另一个上面,如键盘

时间:2014-02-24 22:56:13

标签: ios iphone xamarin

当用户点击屏幕的一部分时,我想要像键盘一样显示自定义UI。我已经看过一些例子,但他们引用UIView的方法似乎不存在(可能是因为我有Starter许可证?)例如UIView.beginAnimations不存在。

有没有人有Xamarin(即MonoTouch)的例子?

我想要显示我的UI部分,并滚动现有视图以使字段正确可见。

2 个答案:

答案 0 :(得分:1)

UITextViewUITextField具有inputView属性,可让您完全满足您的需求。设置视图,将其设置为输入视图,一旦用户创建文本视图或文本字段第一响应者,您的视图就会出现。 iOS7有UIInputView类,您可以将其子类化,以获得与键盘类似的背景视图。

答案 1 :(得分:0)

为什么不创建视图并将其放在可见视图之外。当您想要显示它时,只需将其移动到可见区域即可。这样你也可以添加动画。

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