首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >关闭键盘后,使inputAccessoryView可见

关闭键盘后,使inputAccessoryView可见
EN

Stack Overflow用户
提问于 2012-05-27 02:14:40
回答 5查看 11.1K关注 0票数 37

我想做的是在iPad上创建类似于Safari中的“在页面上查找”的搜索功能。

我正在使用一个包含一些项目的UIToolbar,并通过将其设置为UITextField上的inputAccessoryView将其附加到键盘上。效果很好,但有一件事我搞不懂。在Safari中,当您搜索某些内容时,键盘会消失,但工具栏仍保留在屏幕底部。

有没有人知道如何做到这一点?我能想到的唯一解决方案是响应键盘关闭事件,然后取出UIToolBar并创建一个自定义动画,将其移动到屏幕底部。但这太老套了。我正在寻找一个更优雅的解决方案。当键盘关闭时,可以让我决定如何处理输入附件视图。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-07-21 05:30:41

它是这样做的:

将UIToolbar分配给视图控制器中的属性:

代码语言:javascript
复制
@property (strong, nonatomic) UIToolbar *inputAccessoryToolbar;

在顶部视图控制器中,添加以下方法:

代码语言:javascript
复制
- (BOOL)canBecomeFirstResponder{

    return YES;

}

- (UIView *)inputAccessoryView{

    return self.inputAccessoryToolbar;

}

然后(可选的,通常不需要这样做),只要键盘隐藏起来,就调用:

代码语言:javascript
复制
[self becomeFirstResponder];

这样,您的inputAccessoryToolbar将既是视图控制器的,也是文本视图的输入附件视图。

票数 60
EN

Stack Overflow用户

发布于 2012-07-05 19:59:46

我最终得到了没有被指定为输入附件视图的UIToolBar,并在UIKeyboardWillShowNotification / UIKeyboardWillHideNotification上上下滑动

票数 8
EN

Stack Overflow用户

发布于 2018-03-06 17:07:40

根据之前的答案更新到Swift 4。如果您通过storyboards添加工具栏,则可以执行此操作

代码语言:javascript
复制
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。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10768659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档