开发者

How to get the animation right: inputView from a UINavigationController's nav bar?

I have a custom UIControl subclass with a UIPickerView as inputView. When the control is tapped, it calls becomeFirstResponder and the picker view automatically slides up from the bottom of the screen, like the system keyboard. This is working great!

The problem is that I am using the custom control as the titleView of a UINavigationItem. It functions properly, but if the view controller is popped off the navigation controller stack while the picker view is visible, the animation is wonky.

What I want to happen:

  • everything is pushed off screen to the right at the same time

What actually happens:

  • first, the background view and navigation bar slide off screen, the picker remains in place
  • then, after they are gone, the picker slides off to the right also

When I use the custom control inside the view controller's main view, it animates away just like the standard keyboard. So it seems as though this is a function of "coming from" the navigation bar, which is animated separately from the views inside.

How can I开发者_运维知识库 fix this, so that the inputView slides out with the rest of the content?


Turns out this can be fixed by calling endEditing: on the UINavigationController's view. In other words, within a view controller:

[self.navigationController.view endEditing:YES];

This causes the input view to slide down while the rest of the view slides off to the right. Not exactly the same as the system keyboard, but not obviously weird.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜