2011-12-19 14 views
2

UITextInputTraits Protocol Referenceによると、UIKeyboardTypeDecimalPadは「iOS 4.1以降で利用可能」です。UIKeyboardTypeDecimalPadが利用可能かどうかをテストするには?

は、このキーパッドの可用性をテストするためのより良い方法はあります...私は、現在のシステムバージョンプリプロセッサマクロを使用しています

は私のアプリは、後のiOS 4.1で実行しているかどうかを確認するためにHow to check iOS version?で見つかったが、私は疑問に思います?私はセレクタ "setKeyboardType"の可用性をテストすることはできません。なぜなら、それは常にYESを返すからです。 UIKeyboardType列挙型の1つが使用可能かどうかをテストする必要があります。

アイデア?

+0

[this](http://stackoverflow.com/questions/6468986/ios-objective-c-how-to-check-if-anum-is-available)の重複の質問。 – Hyperbole

+0

@Hyperbole、あなたの新しいコメントは、列挙型のアドレスをチェックしています。 – tychoD

答えて

4

はこれを試してみてください:

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

これは、十分に「新」であるかどうかを確認するために、デバイス上で実行されているiOSのバージョンをチェックしています。つまり、iOS4.1では、十進数ボタン付きのキーパッドが利用可能でした。したがって、そのバージョン以降のiOSバージョンはそれを持っています。

この手法は(疎に)「バージョンに基づいた機能テスト」です。クラスが特定のセレクタに応答するかどうかをチェックするなど、他の状況でうまく機能するような、能力テストの他の同様のテクニックがあります。

通常、バージョン番号を確認するよりも、使用したい特定のセレクタの使用可能性を確認する方が良いです。しかし、定数のようなものの場合は、根本的なOSのバージョンをチェックすることは(私の意見では)同じように良いです。

+0

マーク、あなたの答えは私がしていたことを確認します。答える時間をとってくれてありがとう! – tychoD