带有自定义视图的 inputAccessoryView 在我关闭键盘后隐藏
inputAccessoryView with custom view hide After I Dismiss keyboard
首先,我的项目是这样结构化的:
-首页有tableView添加元素
-浮动按钮:单击时使键盘出现在自定义视图上方(在 textView 内)以进行数字输入
现在,我在使用 inputAccessoryView 和关闭键盘时遇到问题:
我已经使用 inputAccessoryView 将自定义视图移动到键盘上方,如下所示:
MytextView.inputAccessoryView= MyContainerView;
而且这个工作正常。
当我关闭键盘时出现问题:
[MytextView resignFirstResponder];
键盘和相关的 inputView 正常消失,但是当我再次尝试使 MytextView 成为 firstResponder 后,它不起作用(键盘没有出现)。
我假设发生这种情况是因为textView与inputAccessoryView隐藏在屏幕下方并且inputAccessoryView改变了textview的初始位置(Initial in the Middle of the screen);所以当我使用:
时,textView 不可聚焦并且键盘不出现
[MyTextView becomeFirstResponder]
有没有办法以编程方式将 textView 重新定位到初始位置(屏幕中间),以便在我调用 becomeFirstResponder 时变得可聚焦?
或者有没有办法在我关闭键盘时将 inputAccessoryView 修复在安全区域?
(抱歉,我是 objective-c 和 IOS 的新手)
谢谢!
让我跳出评论有更多的自由。根据您的描述,您可以这样做
- (void) viewDidLoad
{
super.viewDidLoad;
[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector( keyboardDidHide: )
name:UIKeyboardDidHideNotification
object:nil];
}
- ( void ) keyboardDidHide:( NSNotification * ) notification
{
... do stuff here...
}
然后你可以在那里重新定位或做任何你想做的事。或者,您也可以收听 UIKeyboardDidShowNotification
并在那里做准备工作。事实上,有一整套 UIKeyboard...
通知可供您使用,希望对您有所帮助。
编辑
如果您需要根据键盘大小重新定位,还有其他内容。
- ( void ) keyboardDidShow:(NSNotification *)notification
{
NSDictionary * info = notification.userInfo;
CGRect kbRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
... do stuff with kbRect ...
}
你试过用过吗
[self.view endEditing:YES]
要关闭输入视图?
触发该代码后,我从未遇到任何问题,无法将任何输入设置为 firstResponder。
首先,我的项目是这样结构化的:
-首页有tableView添加元素
-浮动按钮:单击时使键盘出现在自定义视图上方(在 textView 内)以进行数字输入
现在,我在使用 inputAccessoryView 和关闭键盘时遇到问题:
我已经使用 inputAccessoryView 将自定义视图移动到键盘上方,如下所示:
MytextView.inputAccessoryView= MyContainerView;
而且这个工作正常。
当我关闭键盘时出现问题:
[MytextView resignFirstResponder];
键盘和相关的 inputView 正常消失,但是当我再次尝试使 MytextView 成为 firstResponder 后,它不起作用(键盘没有出现)。
我假设发生这种情况是因为textView与inputAccessoryView隐藏在屏幕下方并且inputAccessoryView改变了textview的初始位置(Initial in the Middle of the screen);所以当我使用:
时,textView 不可聚焦并且键盘不出现[MyTextView becomeFirstResponder]
有没有办法以编程方式将 textView 重新定位到初始位置(屏幕中间),以便在我调用 becomeFirstResponder 时变得可聚焦?
或者有没有办法在我关闭键盘时将 inputAccessoryView 修复在安全区域?
(抱歉,我是 objective-c 和 IOS 的新手)
谢谢!
让我跳出评论有更多的自由。根据您的描述,您可以这样做
- (void) viewDidLoad
{
super.viewDidLoad;
[NSNotificationCenter.defaultCenter addObserver:self
selector:@selector( keyboardDidHide: )
name:UIKeyboardDidHideNotification
object:nil];
}
- ( void ) keyboardDidHide:( NSNotification * ) notification
{
... do stuff here...
}
然后你可以在那里重新定位或做任何你想做的事。或者,您也可以收听 UIKeyboardDidShowNotification
并在那里做准备工作。事实上,有一整套 UIKeyboard...
通知可供您使用,希望对您有所帮助。
编辑
如果您需要根据键盘大小重新定位,还有其他内容。
- ( void ) keyboardDidShow:(NSNotification *)notification
{
NSDictionary * info = notification.userInfo;
CGRect kbRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
... do stuff with kbRect ...
}
你试过用过吗
[self.view endEditing:YES]
要关闭输入视图?
触发该代码后,我从未遇到任何问题,无法将任何输入设置为 firstResponder。