2013-04-20 73 views
0

此问题与我的其他问题here有关,但这是我正面临的问题中更为重点突出的部分。强制重新计算键盘高度

我有5个文本字段,我想移动(滚动)视图,因此键盘不会隐藏活动字段。我已按照Apple推荐的标准方法实施了keyboardWillShow:文本字段委托方法,并且当我第一次点击任何文本字段时,该方法运行良好。

但是,我用Next按钮替换了键盘上的Return按钮。当它被按下时,焦点跳转到下一个文本字段。由于该过程中的键盘既不隐藏又不显示,因此我的keyboardWillShow:方法未被调用 - 我从NSLogs中看到了这一点,这些NSLogs并未出现在控制台中。

任何想法如何当我点击下一步时强制重新计算键盘高度?我理解的一件事是,为了获得键盘高度(我不想使用硬编码高度),我需要将计算保留在以通知为参数的方法中。

任何想法或建议吗?

回答

1

当然你没有正确说明keyboardWillShow

只需使用textField:didEndEditing或更好的textField:shouldBeginEditing下一个文本字段,并使用相同的逻辑。

要解决键盘高度和位置问题,请为您的数据保留一个变量,并使用通常的通知挂钩使其保持最新状态。

+0

感谢蒙迪,我可以看到这是如何工作的。我还有另一个问题。我的表单中的字段3使用自定义视图进行输入,因此其高度与标准键盘不同。然而,当我使用NSLog来查看是否捕获到了新的高度时,它只有一步滞后,即当我离开该域时捕获,而不是当我输入它时,这非常奇怪,因为检测是在keyboardWillShow。任何想法为什么发生这种情况? – artooras 2013-04-21 10:17:06

+0

在实现自定义输入视图的位置更新您的变量。 – Mundi 2013-04-21 19:01:45