1

私は UIDatePicker を持っていて、UIDatePicker でたとえば灰色で時間を描画したい

私のグラフィックで間隔を描く場合、これが必要なので、datePicker ユーザーは今回は選択できません

ここに画像の説明を入力

4

2 に答える 2

0

申し訳ありませんが、UIDatePickerあなたが説明したような有効な時間範囲の設定はサポートしていません。唯一のオプションは、最短日と最長日です。これが本当に必要な場合は、カスタム コントロールを最初から作成する必要があり、それには多くの労力がかかります。

于 2012-11-15T00:57:43.123 に答える
0

I think I found my solution, I can draw time to another color

for (UIView *view in datePicker.subviews) {
        for (UIView *subView in view.subviews) {
            for (UIView *subSubView in subView.subviews) {
                for (UIView *thirdSubView in subSubView.subviews) {
                    for (UILabel *label in thirdSubView.subviews) {
                        if ([label isKindOfClass:[UILabel class]]) {
                            label.textColor = [UIColor redColor];
                        }
                    }
                }
            }
        }
    }

enter image description here

I need to catch event when scrolling DatePicker, I doing this, and this work, but I break the scroll

for (UIView *view in datePicker.subviews) {
        for (UIView *subView in view.subviews) {
            Class UIPickerTableView = objc_getClass("UIPickerTableView");

            if ([subView isKindOfClass:UIPickerTableView]) {
                UITableView *sub = (UITableView *) subView;
                sub.delegate = self;
            }
            for (UIView *subSubView in subView.subviews) {

enter image description here

I try doing another way, but it doesn't work

for (UIView *view in datePicker.subviews) {
        for (UIView *subView in view.subviews) {
            Class UIPickerTableView = objc_getClass("UIPickerTableView");

            Method targetMethod = class_getInstanceMethod(UIPickerTableView, @selector(scrollViewDidScroll:));
            Method newMethod = class_getInstanceMethod(UIPickerTableView, @selector(__scrollViewDidScroll:));
            method_exchangeImplementations(targetMethod, newMethod);

            for (UIView *subSubView in subView.subviews) {
于 2012-11-15T17:30:13.777 に答える