我们正在开发xamarin.ios应用程序。在这里,我们设计了两个不同的视图,一个用于纵向,另一个是在单视图控制器中的横向视图。两个视图都有一个文本字段。我们正在根据设备方向加载视图。一切都很好但是当我们开始键入文本字段时,键盘向上并自动关闭,同时我们键入一个非常拳头的字符。我们再次专注于文本字段,键盘出现但在我们按任何字母时解除。我注意到的一件事是,当我们点击键盘键“ViewDidLayoutSubviews()”时,事件调用和视图重新加载。你能指导我解决这个问题吗?
从我可以告诉你的是,当文本字段以一种解除键盘的方式更新时,可能会调用一个事件驱动的函数?如果这个假设是正确的,请确保您只将事件添加到文本字段一次。还要确保在每次击键后您正在调用的事件不会更新。一旦用户不再输入文本字段,您可能需要使用事件textbox.EditingDidEnd来运行您想要的任何功能。如果我能看到实际的代码,我可以更详细地更新答案。
我们通过使用标志逻辑地解决了它。当视图首先出现时,我们声明了一个布尔标志isKeyboardAppear = false。当键盘出现时我们将此标志设置为true我们注意到ViewDidLayoutSubviews()方法在每次按键时调用,因此我们编写此代码
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (isKeyboardAppear == true)
{
return;
}
}
当我们手动隐藏键盘时,我们重置标志isKeyboardAppear = false。