我想做的是在iPad上创建类似于Safari中的“在页面上查找”的搜索功能。
我正在使用一个包含一些项目的UIToolbar
,并通过将其设置为UITextField
上的inputAccessoryView
将其附加到键盘上。效果很好,但有一件事我搞不懂。在Safari中,当您搜索某些内容时,键盘会消失,但工具栏仍保留在屏幕底部。
有没有人知道如何做到这一点?我能想到的唯一解决方案是响应键盘关闭事件,然后取出UIToolBar
并创建一个自定义动画,将其移动到屏幕底部。但这太老套了。我正在寻找一个更优雅的解决方案。当键盘关闭时,可以让我决定如何处理输入附件视图。
发布于 2014-07-21 05:30:41
它是这样做的:
将UIToolbar分配给视图控制器中的属性:
@property (strong, nonatomic) UIToolbar *inputAccessoryToolbar;
在顶部视图控制器中,添加以下方法:
- (BOOL)canBecomeFirstResponder{
return YES;
}
- (UIView *)inputAccessoryView{
return self.inputAccessoryToolbar;
}
然后(可选的,通常不需要这样做),只要键盘隐藏起来,就调用:
[self becomeFirstResponder];
这样,您的inputAccessoryToolbar将既是视图控制器的,也是文本视图的输入附件视图。
发布于 2012-07-05 19:59:46
我最终得到了没有被指定为输入附件视图的UIToolBar
,并在UIKeyboardWillShowNotification / UIKeyboardWillHideNotification
上上下滑动
发布于 2018-03-06 17:07:40
根据之前的答案更新到Swift 4。如果您通过storyboards添加工具栏,则可以执行此操作
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet var toolbar: UIToolbar!
override var canBecomeFirstResponder: Bool {
get {
return true
}
}
override var inputAccessoryView: UIView {
get {
return self.toolbar
}
}
override func viewDidLoad() {
super.viewDidLoad()
textField.inputAccessoryView = toolbar
}
}
在这种情况下,每当文本字段放弃first responder时,它都会将first responder默认为主视图。请记住,您可能希望显式辞职first responder,如果有多个UI元素,并且first responder在辞职后默认为不需要的视图,则将主视图设置为first responder。
https://stackoverflow.com/questions/10768659
复制相似问题