iOS自定义UIView作为输入键盘

iOS自定义UIView作为输入键盘,ios,swift,uiview,textfield,uiviewanimation,Ios,Swift,Uiview,Textfield,Uiviewanimation,在尝试使用自定义视图作为文本字段的输入键盘时,我遇到了很大的问题 设置非常简单(用于测试):我有一个UIView,有一个按钮,屏幕大小的一半,上面有一个文本字段 我设置了一个虚拟视图作为文本字段的输入视图,如solet-dummyView:UIView=UIView(frame:CGRect(x:0,y:0,width:1,height:1)) 此外,我还在viewdideappeartestView.frame.origin.y=view.bounds.height上添加了以下设置。当视图出现



在尝试使用自定义视图作为文本字段的输入键盘时,我遇到了很大的问题
设置非常简单(用于测试):我有一个UIView,有一个按钮,屏幕大小的一半,上面有一个文本字段
我设置了一个虚拟视图作为文本字段的输入视图,如so
let-dummyView:UIView=UIView(frame:CGRect(x:0,y:0,width:1,height:1))

此外,我还在
viewdideappear
testView.frame.origin.y=view.bounds.height上添加了以下设置。当视图出现在屏幕上时,这当然会被忽略(将其置于
viewDidLoad
会导致相同的行为)。但是,将其放入
viewdidLayoutSubviews
会导致一种非常奇怪的行为,视图不会出现在屏幕上,而是尝试将其动画化,比如说380原点。y什么都不做
最好的部分还在后面:如果我隐藏视图,那么幻灯片动画(代码如下)

很好用。但是,尝试再次将其向下滑动,并在按钮按下时的文本字段上
退出FirstResponder
(代码如下)

显示了一个有趣的错误行为:视图从顶部滑动到当前位置。然而,在第二次按下按钮时,它工作正常,它向下滑动,但在动画完成后它会重新出现在屏幕上

您能帮助我吗?

只需设置

self.textField.inputView = self.pickerView;

避免所有这些自定义动画。

糟糕,我忘了说我已经试过了,没有处理这个错误:由于未捕获的异常“UIViewControllerHierarchyConsistency”而终止应用程序,原因:'子视图控制器:应具有父视图控制器:但请求的父视图是:'您是从UIView或UIViewController中对该视图进行子类化吗?它是在interface builder中设计的一个简单UIView,带有一些按钮,在常规屏幕视图中设置。我没有专门为它创建一个类。我也没有在其他地方创建它作为我通过编程调用的视图。您尝试过这个解决方案吗?是的,但是如果我从superView中删除它,它会释放所有约束,其中最重要的是高度,它被标准键盘高度所取代,我不希望发生这种情况
UIView.animateWithDuration(0.6, animations: {
            //self.testView.frame = self.whereToBe!
            self.testView.frame.origin.y = self.view.frame.height

            }, completion: {
                finished in
                if finished {
                    self.view.endEditing(true)
                    //self.inputField.resignFirstResponder()
                    self.testView.hidden = true
                }
        })
self.textField.inputView = self.pickerView;