2017-12-10 3 views
0

스페이스 바가 일반적으로하는 일을하기 위해 삭제 키를 얻으려고합니다. 즉, 사용자가 UITextField에서 삭제를 클릭하면 대신 공간이 나타나길 원합니다.다른 키를 눌렀을 때 키를 시뮬레이션하는 방법은 무엇입니까?

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    let char = string.cString(using: String.Encoding.utf8)! 
    let isBackSpace = strcmp(char, "\\b") 
    if (isBackSpace == -92) { 
     print("Delete was pressed") 
     return false 
    } 

    return true 
} 

나는 이것이 삭제 키를 비활성화한다는 것을 알고 있지만 앞으로 어떻게 나아갈 수 있습니까? 또한 공간이 선택된 텍스트를 대체합니다 (항상 선택된 텍스트가 있음).

답변

0

textField 매개 변수는 사용자가 작동되는 텍스트 필드. 당신이 좋아하는 것은 자유롭게 할 수 있습니다. 따라서 false을 반환하고 그 직전에 textFieldtext을 원하는 것으로 변경하십시오.

텍스트에 공백을 추가하는 것이 쉬운 경우 쉽게 textField.text!을 가져 와서 해당 문자열에 공백을 추가하고 textField.text을 설정하십시오. 또는 현재 선택 영역을 공백으로 바꾸려면 공백을 제거하지 말고 range 매개 변수를 사용하여 공백이있는 위치를 알려주는 textField.text으로 이동하십시오.

즉, 문자열 작업 방법에 대해 아는 경우이 메서드의 일부로 문자열 textField.text을 사용할 수 있습니다.

는 키보드 척 할 수 있습니다 UITextInput 프로토콜을 사용하는 다른 방법이 있습니다. 예를 들어 textField.insertText(" ")이라고 말하면 원하는 결과를 얻을 수 있지만 시도해보고보아야합니다.

+0

죄송합니다, 나는 그것을 명확하게해야하지만 공간은 마지막에 추가되지 않습니다. 선택된 텍스트가 공백으로 바뀝니다. (항상 선택된 텍스트가 있습니다) – user9059405

+0

Fine, 'range' 매개 변수는 선택한 텍스트가 무엇인지 알려줍니다. 그래서 그 범위의 텍스트를 당신의 공간으로 대체하십시오. 나는 아직도 어려운 부분이 무엇인지 보지 못한다! – matt

관련 문제