2016-08-01 1 views
1

사용자가 텍스트 프레임에서 잘못된 형식을 입력하면 응용 프로그램이 충돌합니다. 어떻게하면 1) 키보드가 올바른 유형인지 (내 경우 숫자 키보드) 2) 틀린 형식을 입력하면 응용 프로그램이 충돌하지 않도록 만들 수 있습니까? 다음은이 버튼에 대한 내 코드입니다 :Swift에서 입력 형식이 올바르게 지정되는지 확인하는 방법

@IBAction func resetDistanceWalkedGoalButton(sender: AnyObject) { 
    var distanceWalkedAlert = UIAlertController(title: "Distance Walked", message: "Current Goal: \(distanceWalkedGoal) miles – Enter a new goal. (e.g. '1.75')", preferredStyle: UIAlertControllerStyle.Alert) 

    distanceWalkedAlert.addTextFieldWithConfigurationHandler { 
     (textField) in 
    } 

    distanceWalkedAlert.addAction(UIAlertAction(title: "Submit", style: .Default, handler: { 
     (action) in 

     let textW = distanceWalkedAlert.textFields![0] as UITextField 
     print(textW) 

     textW.keyboardType = UIKeyboardType.NumberPad 

     let distanceWalkedGoalFromAlert = Double(textW.text!) 


     distanceWalkedGoal = distanceWalkedGoalFromAlert! 

     print(distanceWalkedGoal) 
     self.distanceWalkedGoalNumber.text = "\(distanceWalkedGoal)" 

    })) 

    distanceWalkedAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { 
     (action) in 

     self.dismissViewControllerAnimated(true, completion: nil) 


    })) 

    self.presentViewController(distanceWalkedAlert, animated: true, completion: nil) 



} 

답변

0

당신이 방법 addTextFieldWithConfigurationHandler의 UITextField에 대한 설정 속성과는

alertController.addTextFieldWithConfigurationHandler { (textField) in 
     textField.placeholder = "Enter RSS Link here ..." 
     textField.text = link 
     textField.keyboardType = UIKeyboardType.NumberPad 

     // add Notification to handle text input if you need 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.textDidChange), name: UITextFieldTextDidChangeNotification, object: linkTextField) 

    } 
1

키보드가 올바른 유형인지 확인 충돌하지 않습니다해야한다가 (이 될 것입니다 내 경우 숫자 키보드)

실제로 현재 코드를 변경할 필요가 없습니다.

textW.keyboardType = .NumberPad 

그러나 iPad에는 숫자 패드 키보드가 없습니다. iPad에 숫자 패드를 표시하려면 나만의 숫자 패드를 만들어야합니다.

는 잘못된 형식이 조금 더 많은 작업을 필요로 입력

경우 너무 응용 프로그램이 충돌하지 않는합니다.

distanceWalkedAlert.addAction(UIAlertAction(title: "Submit", style: .Default, handler: { 
    (action) in 

    let textW = distanceWalkedAlert.textFields![0] as UITextField 
    print(textW) 

    textW.keyboardType = UIKeyboardType.NumberPad 

    let distanceWalkedGoalFromAlert = Double(textW.text!) 

    guard distanceWalkedGoalFromAlert != nil else { 
     // if code execution goes here, this means that invalid input is detected. 
     // you can show another alert telling the user that here. 
     return 
    } 

    distanceWalkedGoal = distanceWalkedGoalFromAlert! 

    print(distanceWalkedGoal) 
    self.distanceWalkedGoalNumber.text = "\(distanceWalkedGoal)" 

})) 

을 아니면 아예 WKTextFieldFormatter 블록 잘못된 입력을 시도 할 수 있습니다 : 당신이 두 배로 문자열로 변환 한 후 "제출"작업에 대한 작업 처리기에서 약간의 확인을한다.

관련 문제