テキストフィールドにバリデーションを適用したい。2 つのテキスト フィールドがあり、2 番目のテキスト フィールドの値が「AM」の場合、0 ~ 11 の値のみを入力したいと考えています。別のテキスト フィールドの値に関して検証テキスト フィールドを適用するにはどうすればよいですか?
前もって感謝します...
テキストフィールドにバリデーションを適用したい。2 つのテキスト フィールドがあり、2 番目のテキスト フィールドの値が「AM」の場合、0 ~ 11 の値のみを入力したいと考えています。別のテキスト フィールドの値に関して検証テキスト フィールドを適用するにはどうすればよいですか?
前もって感謝します...
ビューコントローラの両方のテキストフィールドへの参照を保持することで、デザインを実現できます。
UIPickerView
ただし、 12未満の項目の数から選択するためにを使用する方が、Appleのヒューマンインターフェイスガイドラインにはるかに準拠しています。
この方法を試してください
- (BOOL) textFieldShouldBeginEditing:(UITextField *)textField{
if(textField==self.txt1 && [self.txt2.text isEqualToString:@"AM"]){
[self.txt1 setKeyboardType:UIKeyboardTypeNumberPad];
}
return YES;
}
- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([string isEqualToString:@""]) {
return YES;
}
if(textField==self.txt1 && [self.txt2.text isEqualToString:@"AM"]){
int no=[self.txt1.text intValue];
NSLog(@"%d",no);
int enteredno=[string intValue];
int sum=no*10+enteredno;
if (sum>11) {
return NO;
}
}
return YES;
}
ここで、txt1 と txt2 は 1 番目と 2 番目のテキストフィールドです。デリゲートを両方のテキストフィールドに設定します。
2番目のテキストファイルから値を取得し、チェックしてから検証します
if([secTxtField.text isEqualToString:@"AM"])
{
//do the validation for the first
}
最初にここで数字のみをチェックし、
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
static NSCharacterSet *charSet = nil;
if(!charSet) {
charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet] retain];
}
NSRange location = [string rangeOfCharacterFromSet:charSet];
if(!(location.location == NSNotFound))
{
if([secTxtField.text isEqualToString:@"AM"])
{
//get the first textField input
//Conver to int
//Check for less than 11
if (pass)
{
return YES;
}
else
{
return NO;
}
}
}
return (location.location == NSNotFound);
}