当用户点击屏幕的一部分时,我想要像键盘一样显示自定义UI。我已经看过一些例子,但他们引用UIView的方法似乎不存在(可能是因为我有Starter许可证?)例如UIView.beginAnimations不存在。
有没有人有Xamarin(即MonoTouch)的例子?
我想要显示我的UI部分,并滚动现有视图以使字段正确可见。
答案 0 :(得分:1)
UITextView
和UITextField
具有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];
}