向上移动视图以适应键盘

时间:2011-03-03 13:21:37

标签: iphone xamarin.ios

我有一个包含多个文本字段的视图,并且我希望执行与单击文本字段时联系人应用程序执行时相同的效果,否则键盘会在出现时隐藏。当我关闭键盘时,我打算正确地将视图向下移动。

我怀疑我是通过更改Frame值来做到这一点的,但是我需要对它进行动画处理,以免对用户造成伤害。

么?实例

3 个答案:

答案 0 :(得分:6)

在UIScrollView中包装您的视图确实是要走的路。与textFieldDidEndEditing代理人一样,您可以订阅UIKeyboardDidHideNotificationUIKeyboardDidShowNotification,当您收到键盘确实隐藏/显示的通知时,请相应地滚动您的视图。如果需要,我可以发布键盘通知的代码示例:)

修改 无论如何我想发布代码 - 有人可能会发现它有用:

您需要为通知声明侦听器:

NSObject hideObj = NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.DidHideNotification, HandleKeyboardDidHide);
NSObject showObj = NSNotificationCenter.DefaultCenter.AddObserver(UIKeyboard.DidShowNotification, HandleKeyboardDidShow);   

然后你的Action方法看起来像:

void HandleKeyboardDidShow(NSNotification notification)
{
     scrollView.ScrollRectToVisible(textfield.Frame, true);
}

void HandleKeyboardDidHide(NSNotification notification)
{
     // scroll back to normal
}

修改2

因此,如果您希望在视图被销毁时删除Observers,首先需要确保在添加观察者时分配NSObject,然后使用以下代码将其删除:

NSNotificationCenter.DefaultCenter.RemoveObserver(showObj);
NSNotificationCenter.DefaultCenter.RemoveObserver(hideObj);

希望有所帮助。

答案 1 :(得分:2)

我刚刚在一个应用程序上做了这个。我使用scrollview来包装我的整个视图,然后在textFieldDidEndEditing-delegate方法上使用scrollToRectVisible。它工作得很好!

答案 2 :(得分:1)

有关keyboard management主题的Apple文档相当不错,并且包含可以复制/粘贴到应用中的大多数情况下的代码(位于底部)。

祝你好运。