NSTextCheckingResult for phone numbers

前端 未结 1 380
天涯浪人
天涯浪人 2021-01-31 22:38

Can someone tell me why this evaluates every time to true?!

The input is: jkhkjhkj. It doesn\'t matter what I type into the phone field. It\'s

1条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-31 23:02

    You are using the class incorrectly. NSTextCheckingResult is the result of a text checking that is done by NSDataDetector or NSRegularExpression. Use NSDataDetector instead:

    NSError *error = NULL;
    NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];
    
    NSRange inputRange = NSMakeRange(0, [phone length]);
    NSArray *matches = [detector matchesInString:phone options:0 range:inputRange];
    
    // no match at all
    if ([matches count] == 0) {
        return NO;
    }
    
    // found match but we need to check if it matched the whole string
    NSTextCheckingResult *result = (NSTextCheckingResult *)[matches objectAtIndex:0];
    
    if ([result resultType] == NSTextCheckingTypePhoneNumber && result.range.location == inputRange.location && result.range.length == inputRange.length) {
        // it matched the whole string
        return YES;
    }
    else {
        // it only matched partial string
        return NO;
    }
    

    0 讨论(0)
提交回复
热议问题