Проблема подкласса UIControl в sendActionsForControlEvents - PullRequest
0 голосов
/ 20 августа 2011

У меня та же проблема, что и в этом сообщении Ссылка У меня есть UIControl (с именем GCDatePickerControl) и у меня есть другой класс (с именем GCCalendarPortraitView) В классе GCCalendarPortraitView у меня есть код

dayPicker = [[GCDatePickerControl alloc] init];
dayPicker.frame = CGRectMake(0, 0, self.view.frame.size.width, 0);
dayPicker.autoresizingMask = UIViewAutoresizingNone;
dayPicker.date = date;
[dayPicker addTarget:self action:@selector(datePickerDidChangeDate:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:dayPicker]; 

где dayPicker является объектом класса GCDatePickerControl

в GCDatePickerControl у меня есть код

[self sendActionsForControlEvents:UIControlEventValueChanged];

если я прокомментирую любую из приведенных ниже строк, приложение с моим кодом будет работать нормально

[self sendActionsForControlEvents:UIControlEventValueChanged];
[dayPicker addTarget:self action:@selector(datePickerDidChangeDate:) forControlEvents:UIControlEventValueChanged];

но если я раскомментирую обе строки, то мое приложение-шоу покажет мне этот результат на консоли

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CALayerArray datePickerDidChangeDate:]: unrecognized selector sent to instance 0x7a2cc30'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x02c86919 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x02dd45de objc_exception_throw + 47
    2   CoreFoundation                      0x02c8842b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x02bf8116 ___forwarding___ + 966
    4   CoreFoundation                      0x02bf7cd2 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x00303e14 -[UIApplication sendAction:to:from:forEvent:] + 119
    6   UIKit                               0x0038d6c8 -[UIControl sendAction:to:forEvent:] + 67
    7   UIKit                               0x0038fb4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    8   UIKit                               0x0038d67f -[UIControl sendActionsForControlEvents:] + 49
    9   CalendarApp                         0x00016d7f -[GCDatePickerControl buttonPressed:] + 437
    10  UIKit                               0x00303e14 -[UIApplication sendAction:to:from:forEvent:] + 119
    11  UIKit                               0x0038d6c8 -[UIControl sendAction:to:forEvent:] + 67
    12  UIKit                               0x0038fb4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    13  UIKit                               0x0038e6f7 -[UIControl touchesEnded:withEvent:] + 458
    14  UIKit                               0x003272ff -[UIWindow _sendTouchesForEvent:] + 567
    15  UIKit                               0x003091ec -[UIApplication sendEvent:] + 447
    16  UIKit                               0x0030dac4 _UIApplicationHandleEvent + 7495
    17  GraphicsServices                    0x03413afa PurpleEventCallback + 1578
    18  CoreFoundation                      0x02c67dc4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    19  CoreFoundation                      0x02bc8737 __CFRunLoopDoSource1 + 215
    20  CoreFoundation                      0x02bc59c3 __CFRunLoopRun + 979
    21  CoreFoundation                      0x02bc5280 CFRunLoopRunSpecific + 208
    22  CoreFoundation                      0x02bc51a1 CFRunLoopRunInMode + 97
    23  GraphicsServices                    0x034122c8 GSEventRunModal + 217
    24  GraphicsServices                    0x0341238d GSEventRun + 115
    25  UIKit                               0x00311b58 UIApplicationMain + 1160
    26  CalendarApp                         0x000025c4 main + 102
    27  CalendarApp                         0x00002555 start + 53
    28  ???                                 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'

Я не могу отследить мою проблему, плз, кто-нибудь, помогите мне Спасибо

1 Ответ

0 голосов
/ 20 августа 2011

Эта ошибка возникает, когда элемент управления пытается вызвать селектор для заданной цели, а ее нет.В вашем случае вы проверили, что «datePickerDidChangeDate:» существует?Это может быть просто опечатка.

...