键盘退出后,使inputAccessoryView可见
我想要做的是创build类似于iPad上的Safari浏览器中的“查找页面”searchfunction。
我使用UIToolbar
中的一些项目,并将其附加到键盘上,将其设置为UITextField
上的inputAccessoryView
。 像魅力一样工作,但有一件事我不明白。 在Safari中,当您search某物时,键盘消失,但工具栏仍保留在屏幕的底部。
有没有人有一个线索如何做到这一点? 我能想到的唯一的解决办法是响应键盘解散事件,然后拔出UIToolBar
并创build一个自定义的animation,将其移动到屏幕的底部。 但是这是不好的。 我正在寻找一个更优雅的解决scheme。 有些东西可以让我决定如何解决键盘input附件视图。
这样做是这样的:
将您的UIToolbar分配给视图控制器中的一个属性:
@property (strong, nonatomic) UIToolbar *inputAccessoryToolbar;
在您的顶视图控制器中,添加这些方法:
- (BOOL)canBecomeFirstResponder{ return YES; } - (UIView *)inputAccessoryView{ return self.inputAccessoryToolbar; }
然后(可选地,因为通常不需要),只要键盘被隐藏,就调用:
[self becomeFirstResponder];
这样,您的inputAccessoryToolbar将是您的视图控制器和您的文本视图的input附件视图。
我已经结束了UIToolBar
没有分配作为input附件视图,并上下滑动UIKeyboardWillShowNotification / UIKeyboardWillHideNotification
添加@ arik的答案,这里是Swift版本:
class ViewController: UIViewController { @IBOutlet var textField: UITextField! // Input Accessory View private var inputAccessoryToolbar: UIToolBar? override func canBecomeFirstResponder() -> Bool { return true } override var inputAccessoryView: UIView? { return inputAccessoryToolbar } override func viewDidLoad() { super.viewDidLoad() inputAccessoryToolbar = UIToolbar(frame: CGRectMake(0, 0, view.frame.size.width, 50)) textField.inputAccessoryView = inputAccessoryToolbar } // UITextFieldDelegate func textFieldShouldReturn(textField: UITextField) -> Bool { becomeFirstResponder() return true } }
感谢您的干净的解决scheme!