2015-01-13 2 views
1

단위 변환기를 만들고 사용자가 값을 입력 할 때 모든 단위가 동시에 업데이트되기를 원합니다. 예 : 'cm'필드에 25를 입력하면 'mm'필드에 250이 자동으로 표시되고 'meter'필드에는 0.25가 표시됩니다. Swift - 편집시 소수점 유지 변경됨

지금까지 즉시 진수를 입력으로 아이폰 OS가 자동으로 포맷되어 있기 때문에 전체 숫자로 된 UITextField의 형식을 멀리 진수 스트립, 편집이 너무 오래 사용자가 전체 번호를 입력으로 이벤트를 변경하여 큰 노력하고 있습니다 각 키를 누른 후 입력 된 숫자는 소수점 즉 "25"로 끝납니다. "25.0"대신에 "25"가됩니다. 이 자동 서식을 방지 할 수있는 방법은 256

로 표시됩니다 25.6를 입력 예를 들어

있습니까? 내가 찾은 유일한 해결책은 이벤트를 에 연결하는 것입니다. 편집 완료하지만 사용자가 값 입력을 완료하고 필요에 따라 자동으로 업데이트되지 않으면 다른 단위가 업데이트되기 때문에 이상적이지 않습니다.

다음과 같이 내가 두 배로 문자열로 변환하기 위해 사용하고있는 코드는 다음과 같습니다 나는 stringToDouble 기능이 잡으려고 노력했습니다

@IBAction func editMm(sender: AnyObject) { 
     var setToDouble:Double? = stringToDouble(textFieldMm.text) 
     valueEdited(setToBase!) 
} 

func stringToDouble(inputString:String) -> Double{ 
    // this removes the comma separators which are automatically added to the UITextField during formatting 
     var formattedString = inputString.stringByReplacingOccurrencesOfString(",", withString: "") 
     var doubleResult:Double = (formattedString as NSString).doubleValue 
     return doubleResult 
} 

하지만 값이 그 지점에 도달하기 전에 포맷이 일어나는 것 같다 코드에서.

+0

내 코드가 문제를 해결하지 못 했습니까? – rakeshbs

+0

네, 감사했습니다. 비록 내 애플 리케이션이 그것을 수용하는 방식으로 변경해야했습니다. –

답변

0

함수는 UITextFieldDelegate에서 사용할 수 있습니다. newString에는 편집하는 동안 현재 문자열이 포함됩니다.

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

    let newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string) 
    println(newString) 

    return true 
}