티스토리 뷰

텍스트필드에 특정 텍스트를 작성하고, ViewController의 "다음" 버튼을 클릭하기만 하면 되는 간단한 UITest를 구현하던 중 아래와 같은 오류가 발생했다.

잘 생각해보니,

위와 같은 화면에서 TextField에 커서를 대면

위처럼 키보드가 표시되어 버튼이 나타나지 않아 발생한 오류 로 받아들였다.

구글링을 하다 도저히 찾지 못하던 중 무작정 여러시도를 해봤다. 다른 버튼을 추가적으로 등록하여 이를 클릭하면 키보드가 사라지지 않을까 생각도 했는데, 버튼을 등록하다가 실수로 변수의 identifier 선언을 잘못 설정하던 중 아래와 같은 오류가 떴다.

내가 사용할 수 있는 버튼의 목록이 떴다. (이 목록을 이렇게 강제로 오류를 띄우지 않고 볼 수 있는 방법을 아직 찾지 못했다.)

'Return'이 키보드의 Return 버튼이겠다고 추측했고, 이를 사용하면 되겠다 싶어

class ViewControllerFlowUITests: XCTestCase {
    private var returnButton:XCUIElement!
    ...
    override func setUpWithError() throws {
        try super.setUpWithError()
        continueAfterFailure = false

        app = XCUIApplication()
        app.launch()

        ...
        returnButton = app.buttons["Return"]
    }
    func testExample() throws {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()

        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }
    func test_ViewController(){
        nicknameTextField.tap()
        nicknameTextField.typeText("Shawn")
        returnButton.tap()
        nextButton.tap()
    }
}

위와 같이 returnButton을 구현했더니 해결되었다.

 

물론 그냥 이렇게만 하면 키보드 버튼은 눌리지만 키보드가 내려가지는 않는다.

ViewController.swift(현재 뷰컨트롤러 파일)에서 return 버튼을 누르면 키보드가 dismiss 되도록 하는 TextField Delegate 함수를 직접 작성해야 한다. 

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함