当前位置:  开发笔记 > IOS > 正文

如何在UI测试期间在Swift应用程序中隐藏键盘

如何解决《如何在UI测试期间在Swift应用程序中隐藏键盘》经验,为你挑选了3个好方法。

我刚开始在XCode 7中进行UI测试并遇到了这个问题:

我需要在文本字段中输入文本然后单击按钮.不幸的是,这个按钮隐藏在键盘后面,在将文本输入文本字段时出现.XCode正在尝试滚动以使其可见但我的视图不可滚动因此失败.

我目前的解决方案是:

let textField = app.textFields["placeholder"]
textField.tap()
textField.typeText("my text")
app.childrenMatchingType(.Window).elementBoundByIndex(0).tap() // hide keyboard
app.buttons["hidden button"].tap()

我可以这样做,因为我的ViewController正在拦截触摸:

override func touchesBegan(touches: Set, withEvent event: UIEvent?) {
    view.endEditing(false)
    super.touchesBegan(touches, withEvent: event)
}

我对我的解决方案并不满意,在UI测试期间有没有其他方法可以隐藏键盘?



1> bbjay..:

如果您已设置文本字段以在委托方法中重新签名FirstResponder(通过textField.resignFirstResponder()self.view.endEditing(true))textFieldShouldReturn(),那么

textField.typeText("\n")

会做的.



2> 小智..:

基于对Joe的博客提出的问题,我遇到了一个问题,即在模拟器上运行几次后,键盘无法使用这段代码隐藏:

XCUIApplication().keyboard.buttons["Hide keyboard"]

所以,我改成了:(谢谢乔)

XCUIApplication().keyboard.buttons["Hide keyboard"]
let firstKey = XCUIApplication().keys.elementBoundByIndex(0)
if firstKey.exists {
   app.typeText("\n")
}

我在这里尝试做的是在点击隐藏按钮后检测键盘是否仍然打开,如果它已经打开,我键入一个"\n",在我的情况下也会关闭键盘.

这也很棘手,因为有时模拟器失去了键盘输入的焦点,这可能会使测试失败,但根据我的经验,失败率低于我采取的其他方法.

我希望这可以提供帮助.



3> Charlie Seli..:

我总是使用它来以编程方式在Swift UITesting中隐藏键盘:

XCUIApplication().keyboards.buttons["Hide keyboard"].tap()

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有