2011-12-19 77 views
2

根據UITextInputTraits Protocol Reference,UIKeyboardTypeDecimalPad「在iOS 4.1及更高版本中可用」。如何測試UIKeyboardTypeDecimalPad是否可用?

我目前使用的系統版本預處理宏在How to check iOS version?發現檢查我的應用程序在iOS 4.1的運行及更高版本,但我不知道......

有沒有更好的方法來測試此鍵盤的可用性?我無法測試選擇器「setKeyboardType」的可用性,因爲它總會返回YES。我需要測試一個UIKeyboardType枚舉是否可用。

任何想法?

+0

Duplicate of this [this](http://stackoverflow.com/questions/6468986/ios-objective-c-how-to-check-if-an-enum-is-available)問題。 – Hyperbole 2011-12-19 17:06:23

+0

@Hyperbole,你的新評論打敗了檢查枚舉的地址。 – tychoD 2011-12-19 23:26:05

回答

4

試試這個:

yourTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
    if (([[[UIDevice currentDevice] systemVersion] doubleValue] >= 4.1)) { 
     yourTextField.keyboardType = UIKeyboardTypeDecimalPad; 
    } 

這是檢查的iOS版本的設備上運行,看它是否是「新」夠了。也就是說,帶有小數點按鈕的鍵盤在iOS4.1中可用。所以,該版本或之後的任何iOS版本都有它。

該技術是(鬆散地)「基於版本的能力測試」。還有其他類似的能力測試技術,比如檢查一個類是否響應某個特定的選擇器,在其他情況下運行良好。

通常,檢查要使用的特定選擇器的可用性比檢查版本號要好。但在類似於常量的情況下,檢查底層操作系統的版本(在我看來)同樣好。

+0

馬克,你的回答證實了我在做什麼。感謝您花時間回覆! – tychoD 2011-12-21 05:41:08