我在ViewController中有一个覆盖整个屏幕的UITextView但是当我运行应用程序并输入它时,如果我键入键盘然后它就不会向上滚动。如果我一直打到屏幕的最底部,它只会向上滚动,但是如果我键入键盘的位置,那么TextView就不会滚动,而且我键入的任何内容都是隐藏的。我该如何解决这个问题?
答案 0 :(得分:0)
您可以更改textview的框架,使其不在键盘下方。
您可以使用此代码对正在显示的键盘作出反应并获得键盘的大小。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification
object:nil];
- (void)keyboardWasShown:(NSNotification *)notification
{
CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
int height = MIN(keyboardSize.height,keyboardSize.width);
int width = MAX(keyboardSize.height,keyboardSize.width);
//Place code here to resize textview
}
答案 1 :(得分:0)
你可以试试这个
这些是textfield的委托方法。
请确保您在.h文件中包含<UITextFieldDelegate>
。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self animateTextField: textField up: YES];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self animateTextField: textField up: NO];
}
- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
const int movementDistance = 80; // tweak as needed
const float movementDuration = 0.3f; // tweak as needed
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.view.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];
}
答案 2 :(得分:0)
IQKeyboardManager是为了创建这个确切的问题。它只需要一行代码:
IQKeyboardManager.sharedManager().enable = true
我强烈建议您使用它而不是开发自己的解决方案(虽然是好的做法,但非常耗时)。