我有一个包含多个文本字段的 View ,我想要实现与“联系人”应用程序在单击文本字段时执行的相同效果,否则在键盘出现时会被键盘隐藏。当我关闭键盘时,我计划将 View 正确向下移动。
我怀疑我是通过更改 Frame 值来做到这一点的,但我需要将其设置为动画,以免对用户造成干扰。
建议?例子?
最佳答案
将 View 包装在 UIScrollView 中确实是正确的方法。以及在 textFieldDidEndEditing
委托(delegate)上,您可以改为订阅 UIKeyboardDidHideNotification
和 UIKeyboardDidShowNotification
,当您收到键盘隐藏的通知时/显示然后适当滚动您的 View 。如果您需要的话,我可以发布键盘通知的代码示例:)
编辑 我想无论如何我都会发布代码 - 有人可能会发现它有帮助:
您需要声明通知的监听器:
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
因此,如果您想在 View 销毁时删除观察者,首先需要确保在添加观察者时分配 NSObject
,然后使用以下代码删除它们:
NSNotificationCenter.DefaultCenter.RemoveObserver(showObj);
NSNotificationCenter.DefaultCenter.RemoveObserver(hideObj);
希望有帮助。
关于iphone - 向上移动 View 以容纳键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5181242/