2011-11-11 3 views
2

내 앱에 조치 시트가 표시되며 모든 작업이 iPhone에서 정상적으로 작동합니다. 그러나, ipad에 자동으로 popover 내에 actionsheet를 생성하고 사용자가 actionsheet 밖을 건드렸을 때 나는 dimissing을 불가능하게 할 수 없다. actionsheet가 아이 패드에 표시되며, 현재 사용하고 표시하는 방법을사용자가 팝업 오버 바깥에 닿았을 때 ipad에서 ActionSheet를 사용 중지합니다.

내가 변경은 :

 UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Choose a preloaded picture", @"Use a photo", nil]; 
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
    actionSheet.tag = 1; 
    [actionSheet showFromRect:CGRectMake(100, 0, 300, 300) inView:self.view animated:YES]; 
    [actionSheet release]; 

또한 사용하여 시도했다.

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

내가 사용자가 actionsheet 외부에 닿을 때 해고에서 uiactionsheet의 팝 오버를 막을 수있는 방법에 대한 어떤 생각?

답변

1

popoverControllerShouldDismissPopover: 메서드는 UIPopoverControllerDelegate 메서드이고 UIActionSheet를 처리하기 때문에 호출되지 않습니다. UIKit은 자동으로 popover 컨트롤러를 생성하기 때문에 대리자를 설정할 기회가 없습니다. [popoverActionsheet superview]으로 popover 뷰 자체에 액세스 할 수는 있지만 UIPopoverController를 제공하지는 않습니다.

사용자 경험 관점에서 Apple은 이러한 동작을 구현하지 말 것을 요구할 것입니다. 옵션을 모달 형식으로 제시해야하는 경우 (사용자가 선택을 할 때까지 사라지지 않는 경우) 사용자는 UIAlertView에 익숙하거나 a modally-presented view controller of your own.