我对 iOS 中的一个功能感到好奇。如果可以的话,请在这里帮助我。
场景:我正在使用输入名称的文本框。它在屏幕的下半部分。文本框正下方是一个显示剩余字符数的标签(例如,在 twitter 提要中)。
问题:当我将文本框放在屏幕的上半部分时。文本字段和标签都是可见的。但是当我将它们放在下半部分时,苹果键盘会覆盖标签部分。有没有办法控制覆盖的区域,使下面的标签也可见?我希望我已经把自己说得够清楚了。谢谢。
在这里,我使用了委托方法,UITextView
你可以这样做UITextField
- 在此代码中,当用户开始在其中输入值时textview
,您的视图的高度会低于其原始动画
-当用户结束输入值时,它将使您的视图大小为原始大小。
-(void)textViewDidBeginEditing:(UITextView *)textView
{
CGRect frame = self.view.frame;
frame.origin.y = -100;
[self.view setFrame:frame];
[UIView commitAnimations];
}
-(void)textViewDidEndEditing:(UITextView *)textView
{
CGRect frame = self.view.frame;
frame.origin.y = 0;
[self.view setFrame:frame];
[UIView commitAnimations];
}
如果您想了解代表,此链接可以帮助您
那么在这种情况下,您必须在键盘弹出时移动文本框。您可以注册通知以了解键盘何时弹出,并且滚动视图将整个内容向上滚动屏幕可以为您完成这项工作
看到这个问题,它很好地解释了如何管理这样的事情
AFAIK您无法控制iOS本机键盘的大小,您可以而且应该做的就是使它们成为滚动视图的子视图并向上滚动。
所以通常的做法是这样的。
UIKeyboardWillShowNotification
在 Notification listener 将调用的方法中,相应地设置 scrollView 的内容大小并设置内容偏移量。
self.scrollView.contentSize = CGSizeMake(320, 267);
self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, localKeyboardFrame.size.height, 0);
[self.scrollView scrollRectToVisible:<rect of view you want to scroll to> animated:YES];
借助适当的通知,在键盘隐藏时撤消更改。UIKeyboardWillHideNotification
self.scrollView.contentInset = UIEdgeInsetsZero
viewDidLoad
在您的方法中添加以下内容
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showKeyboard) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard) name:UIKeyboardWillHideNotification object:nil];
之后——在你的 .m 文件中声明以下 2 个方法
-(void)showKeyboard {
[UIView beginAnimations:@"slide" context:nil];
[UIView setAnimationDuration:0.3];
self.view.transform = CGAffineTransformMakeTranslation(0, -100);
[UIView commitAnimations]; }
-(void)hideKeyboard {
[UIView beginAnimations:@"slide" context:nil];
[UIView setAnimationDuration:0.1];
self.view.transform = CGAffineTransformMakeTranslation(0, 0);
[UIView commitAnimations]; }