带有自定义视图的 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。