私は入力として分と時間を取るテキストフィールドがあるとします。今では、テキストフィールドを24時間に制限し、分フィールドを60に制限することができます。テキストフィールドを1時間と2時間に制限する方法を教えてください。
答えて
テキストフィールドの内容は、shouldChangeCharactersかどうかを尋ねるメソッドを含めて、委譲メソッドで制御できます。ユーザーが範囲外に何かを入力した場合は、それを訂正するか、またはfalse
を返すことで禁止することもできます。
しかし、UIの優れた習慣は、ユーザーが最初にエラーを起こさせないようにすることです。それがpickersの理由です。
すると、あなたのViewControllerクラスがUITextFieldDelegate
プロトコルに準拠してください、minuteField.delegate = self
とhourField.delegate = self
を設定し、その後、shouldChangeCharactersIn range
機能を実装し、入力が数値であることを確認し、あなたがdidEndEditing
を使用することができます< = 2文字の数は数いることを確認することあなたの予想される範囲にあります。
extension VC: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
if textField == minuteField {
guard let minuteText = textField.text, let minutes = Int(minuteText) else {return}
if minutes < 0 || minutes > 60 {
textField.text = ""
}
} else if textField == hourField {
guard let hourText = textField.text, let hours = Int(hourText) else { return }
if hours < 0 || hours > 24 {
textField.text = ""
}
}
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.isEmpty {
return true
} else if string.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) != nil {
return false
} else if let numberOfChars = textField.text?.characters.count, numberOfChars >= 2 {
return false
} else {
return true
}
}
}
正しくはないと思います。置換(stringByReplacingOccurancesInRange)の後にテキスト*が何であるかを最初に計算してから、その文字列が有効であるかどうかをテストする必要があります。 – danh
@ダン、あなたは正しい、私は間違っていた。私のコードをテストして修正しました。今は正しく動作しています。 –
追加された文字列に数字が含まれているかどうかをテストしている方が良いです。 OPは、入力全体の数値を制限することを目指しています。より徹底的なアプローチは、現在のテキストと範囲を変更して文字列を作成することです。 'textField.text.stringByReplacingCharactersInRange:withString'。 (ユーザーがフィールド内の任意の場所にテキストを貼り付ける可能性があることに注意してください)。入力候補の有効性をテストします(たとえば、そのintValue <60など)。 – danh
- 1. Jquery/Javascript:リフレッシュ時の制限時間をリセットする方法を教えてください。
- 2. iOSで時間制限内でオーディオをレンダリングする方法を教えてください。
- 3. 日時が属している日時/時間ブロックをチェックする方法を教えてください。
- 4. unordered_map.emplaceコンパイラの時間エラーを教えてください?
- 5. 、特定の時間に1つのブラウザウィンドウでユーザーをブラウズする方法を教えてください。
- 6. Hiveテーブルにエポック時間間隔でレコードをグループ化する方法を教えてください。
- 7. whileループを置き換えて実行時間を短縮する方法を教えてください。
- 8. 時間の経過とともにオブジェクトの速度を上げる方法を教えてください。
- 9. ユーザがRailsでレコードを編集できる期間を制限する方法を教えてください。
- 10. Pythonを使用してソフトウェアに費やす時間を計算する方法を教えてください。
- 11. Api Google Mapsの経路と時間を教えてください
- 12. JFileChooserをディレクトリに制限する方法を教えてください。
- 13. タイル間の隙間を取り除く方法を教えてください。
- 14. 特定の時間にシャットダウンするようにコンピュータをスケジュールする方法を教えてください。
- 15. 毎日設定された時間に静的アラームを解除する方法を教えてください。
- 16. Arduinoに必要な時間に毎日タスクを実行させる方法を教えてください。
- 17. Appceleratorでビデオの録画時間と録画時間を制限する方法
- 18. redisデータベース間の変更方法を教えてください。
- 19. 長時間実行されるVBAタスクをユーザーが終了する方法を教えてください。
- 20. 時間の経過と共にSidekqでREDISメモリの使用を制限する方法を教えてください。
- 21. Python 3.4ユーザー入力を制限する方法を教えてください
- 22. ユーザーが指定した特定の時間にセロリジョブをカスタマイズする方法を教えてください。
- 23. 特定の時間にPHPファイルでのみcronを実行する方法を教えてください
- 24. Python/Flask:ユーザーがページに費やす時間を知る方法を教えてください。
- 25. 特定の時間にサービスを実行する方法を教えてください。
- 26. 2つのAIR IOSアプリケーション間の通信方法を教えてください。
- 27. Vb.net 2時間の時間を数える方法
- 28. ブール値を一定時間持続させる方法を教えてください。
- 29. ウェブサイトがブラウザでレンダリングされた時間を知る方法を教えてください。
- 30. Azureに毎時waworkerhostをリサイクルさせる方法を教えてください。
私はこのことを知っていますが、一つだけ 'のUITextFieldを使用しているか –
いくつかのヒントをご確認くださいそれとも2つ? –
をチェックするためにアイデアを作成することはできません....あなた' UITextFieldDelegate'方法 'didEndEditing'の方法でチェックを追加し、さらにそれらの値に –