【发布时间】:2018-06-19 08:08:59
【问题描述】:
这是我为在用户开始输入 textview 时移动 textview 而编写的一些代码。
这是代码,
-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{
if(textView == _textViewMsg || textView == _subjectView ){
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
// return YES;
}
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
if(textView == _textViewMsg || textView == _subjectView ){
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
[self.view endEditing:YES];
}
return YES;
}
- (void)keyboardDidShow:(NSNotification *)notification
{
[self.view setFrame:CGRectMake(0,-50,320,460)];
}
-(void)keyboardDidHide:(NSNotification *)notification
{
[self.view setFrame:CGRectMake(0,60,320,520)];
}
当我在移动中单击 textview(在主题中)视图时,我可以输入 textview。它工作正常。 (图一)
当我点击完成按钮时,在隐藏时,即在键盘隐藏时会出现一个黑色视图(检查图像 2)几秒钟,然后再次出现正常视图。
编辑:
解决方案:@michael 刚刚给了我解决方案
将 UIKeyboardDidHideNotification 更改为 UIKeyboardWillHideNotification 它对我有用。
出现新问题: 当我开始输入前 2 个文本视图时,即请求者、名字和姓氏......我无法输入它,因为它正在向上移动。
【问题讨论】:
-
你能确认同样的问题发生在真实设备上,而不仅仅是模拟器上吗?
-
真实设备也在发生同样的事情。
-
不是在文本字段委托中添加观察者,而是将它们添加到 viewDidLoad 并在 dealloc 或 viewDidDisappear 中删除它们。不要更改 self.view 的框架,而是通过将所有这些添加到单独的视图中来优雅地处理它,使其成为 self.view 的子视图,然后移动该单独的视图。或使用 IQKeyBoardManager,您无需执行任何操作。
-
@Ajinkya 我已经使用了 IQKeyBoardManager 库,但我仍然遇到这个问题。
-
在那个视图中有 9 个视图,其中 5 个是 textview,4 个是 textfield。
标签: ios objective-c keyboard uitextview