iOS使用UIDataDetectorType簡單驗證手機號、郵箱、網址

ppsheep發表於2016-11-02

歡迎大家關注我的公眾號,我會定期分享一些我在專案中遇到問題的解決辦法和一些iOS實用的技巧,現階段主要是整理出一些基礎的知識記錄下來

iOS使用UIDataDetectorType簡單驗證手機號、郵箱、網址

文章也會同步更新到我的部落格:
ppsheep.com

這裡只是做簡單的手機號、郵箱和網址的驗證,如果需要複雜的,請使用正則驗證,或者其他強大的驗證方式。

UIKit框架 有一個自帶的驗證手機號 郵箱等 的一個類 UIDataDetector.h

有時候 我們在專案裡 並不需要那麼複雜的驗證 可能只是想要有手機號時 能夠點選撥打電話這麼簡單,那麼我們就沒有必要去做複雜的正則驗證了,用UIDataDetectorTypes就已經足夠了

看一下UIDataDetectorTypes中的型別

typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) {
    UIDataDetectorTypePhoneNumber                                        = 1 << 0, // Phone number detection
    UIDataDetectorTypeLink                                               = 1 << 1, // URL detection
    UIDataDetectorTypeAddress NS_ENUM_AVAILABLE_IOS(4_0)                 = 1 << 2, // Street address detection
    UIDataDetectorTypeCalendarEvent NS_ENUM_AVAILABLE_IOS(4_0)           = 1 << 3, // Event detection
    UIDataDetectorTypeShipmentTrackingNumber NS_ENUM_AVAILABLE_IOS(10_0) = 1 << 4, // Shipment tracking number detection
    UIDataDetectorTypeFlightNumber NS_ENUM_AVAILABLE_IOS(10_0)           = 1 << 5, // Flight number detection
    UIDataDetectorTypeLookupSuggestion NS_ENUM_AVAILABLE_IOS(10_0)       = 1 << 6, // Information users may want to look up

    UIDataDetectorTypeNone          = 0,               // Disable detection
    UIDataDetectorTypeAll           = NSUIntegerMax    // Enable all types, including types that may be added later
} __TVOS_PROHIBITED;複製程式碼

這裡有這麼多種類 當然我們不是全都用得上

包含了電話號 連結 還有地址 日期事件 航班號等等 當然 有的是 要到10.0才能用得上

使用起來 也很方便的

UITextView中有一個屬性 是dataDetectorTypes 直接指定型別 就可以直接判斷得出

UITextView *textView1 = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, self.view.frame.size.width, 200)];
textView1.editable = NO;//不允許編輯
textView1.font = [UIFont systemFontOfSize:20];
textView1.text = @"只檢測手機號------\r\n我的手機號不是: 13666666666 \r\n\r\n"
"我的部落格網址: www.ppsheep.com \r\n\r\n"
"我的郵箱: 787688073@qq.com \r\n\r\n";
textView1.dataDetectorTypes = UIDataDetectorTypePhoneNumber;
[self.view addSubview:textView1];


//UIDataDetectorType  是將網址和郵箱一起檢測  點選能夠相應地進入操作
UITextView *textView2 = [[UITextView alloc] initWithFrame:CGRectMake(10, 250, self.view.frame.size.width, 200)];
textView2.font = [UIFont systemFontOfSize:20];
textView2.editable = NO;
textView2.text = @"只檢測網址和郵箱------\r\n我的手機號不是: 13666666666 \r\n\r\n"
"我的部落格網址: www.ppsheep.com \r\n\r\n"
"我的郵箱: 787688073@qq.com \r\n\r\n";
textView2.dataDetectorTypes = UIDataDetectorTypeLink;
[self.view addSubview:textView2];複製程式碼

看一下效果

iOS使用UIDataDetectorType簡單驗證手機號、郵箱、網址

相關文章