2016-06-14 8 views
0

ViewControllerUIDatePickerを使用しました。 iOS 8.x、 で正常に動作しましたが、iOS 9.xデバイスで実行したときにクラッシュしました。iOS9のUIDatePickerクラッシュ

同じ方法でUIDatePickerを使用する新しいプロジェクトを作成しようとしましたが、すべてのiOSデバイスで問題なく動作しました。

私の質問は私のプロジェクト設定が間違っているか、私がUIDatePickerの方法が間違っていたかどうかです。

クラッシュ情報は、次のとおりです。

click to see the crash log

私はHAVAブレークポイントを設定し、それだけで_datePicker.datePickerMode = UIDatePickerModeDateでクラッシュ。 iOS 9.3では、iOS 8.1では正常に動作しました。

- (UIDatePicker *)datePicker { 
    if (!_datePicker) { 
     NSDate *nowDate = [NSDate date]; 
     _datePicker = [[UIDatePicker alloc] init]; 
     _datePicker.datePickerMode = UIDatePickerModeDate; 
     _datePicker.hidden = YES; 
     _datePicker.backgroundColor = [UIColor whiteColor]; 
     [_datePicker addTarget:self action:@selector(datePickerChanged) forControlEvents:UIControlEventValueChanged]; 
    } 
    return _datePicker; 
} 
+1

クラッシュをキャッチする例外ブレーキポイントを設定 – Injectios

+0

コードを入れてもいいですか? –

+0

私は、ビューとピッカービューの階層に何か間違いがあると思います。 –

答えて

0

これは既に回答済みのこのquestionへの参照としてのiOS 9アップデートのためです。 以下のようにコードを更新してください。

_datePicker = [[UIDatePicker alloc] init]; 
    _datePicker.datePickerMode = UIDatePickerModeDateAndTime; 
    _datePicker.datePickerMode = UIDatePickerModeDate; 

UIPickerViewとUIDatePickerは現在、サイズ変更が可能であり、 適応以前に、これらのビューは、あなたがそれらのサイズを変更しようとしたとしても 場合、デフォルトのサイズを強制します。これらのビューのデフォルトの幅は、 iPhoneのデバイス幅ではなく、すべてのデバイスで幅が で320ポイントになりました。デフォルトの サイズの古いエンフォースメントに依存するインターフェイスは、iOS 9用にコンパイルすると間違って表示される可能性があります。 の問題は暗黙的な動作に頼るのではなく、ピッカー ビューを希望のサイズに完全に制限することによって解決できます。

+0

私はこれを試しましたが、もう一度クラッシュしました。 – suool