我正在做一个小项目。它基本上只是一个文本字段,你可以输入一些短文本(基本上只有几个单词),然后你有3个主要按钮(它看起来像一个标签栏)你可以选择按键盘来改变文字或如果你没有输入一个,你可以按颜色从文本的不同颜色中选择,或者你可以按第三个按钮来改变字体。
所以,我刚开始,我有这个问题,如果我按下键盘按钮键盘应该出现,textview应该自动向上移动216px(键盘的高度)我有下面的代码:
frame.origin
中的111是y-coordiantes应该移动的位置。
- (IBAction)keyBoardAction:(id)sender {
CGRect frame = _textField.frame;
frame.origin.y = 111;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
_textField.frame = frame;
[UIView commitAnimations];
[_textField becomeFirstResponder];
}
因为它不起作用我在没有textField
firstResponder
的情况下运行应用程序,因此键盘不会阻止我的视图,我可以在整个过程中观看textField。
当我运行应用程序并按下键盘按钮时,textField
首先在屏幕下方向下移动,然后再次向上移动到与开头相同的位置。
答案 0 :(得分:1)
- (void)registerNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void) keyboardWillShow:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
NSTimeInterval duration = userInfo ? [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue] : 1.0;
CGRect keyboardEndFrame;
[[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
CGRect newFrame = _textField.frame;
newFrame.origin.y -= keyboardEndFrame.size.height;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: duration];
_textField.frame = newFrame;
[UIView commitAnimations];
}