Обратный вызов iOS UIActionSheet работает в симуляторе, но не на телефоне
У меня есть лист действий, который при успешном нажатии на один из его параметров вызывает clickedButtonAtIndex при запуске в симуляторе, но при тестировании на iPhone (5 с в Xcode 6) он не достигает обратного вызова.
Заголовок...
@protocol SGETriggerToolBarDelegate
-(void)showCustomEditView;
@end
@interface SGETriggerToolBarController : UIViewController <UIActionSheetDelegate>
@property (nonatomic, assign) id <SGETriggerToolBarDelegate> delegate;
@property (nonatomic, strong) UIToolbar *toolbar;
в реализации...
// in xController.m
// ...
- (void)triggerButtonHandler
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select an event type"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
for (SGETrigger *trigger in triggers) {
[actionSheet addButtonWithTitle:trigger.name];
}
[actionSheet addButtonWithTitle:@"Cancel"];
actionSheet.cancelButtonIndex = triggers.count;
[actionSheet showFromToolbar:self.toolbar];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == [actionSheet cancelButtonIndex]) {
return;
} else {
selectedTrigger = triggers[buttonIndex];
triggerButton.title = [NSString stringWithFormat:@"• %@ •", selectedTrigger.name];
[delegate showCustomEditView];
}
}
// ...
1 ответ
Если вы видите "Представление листа действий, обрезанного по его суперпредставлению. Некоторые элементы управления могут не реагировать на прикосновения"
Замена...
[actionSheet showFromToolbar:self.toolbar];
с
[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
решил это для меня.