가로 방향으로 아이폰에 슬픔을 느끼게하는 작업 시트가 있습니다. 모든 것이 잘 표시되지만, Landscape에서는 첫 번째 실제 버튼이 취소 버튼과 동일한 색인을 가지므로 논리가 작동하지 않습니다.가로 방향의 UIActionSheet에 잘못된 buttonIndicies가 있습니다.
initWithTitle을 사용하여 actionSheet를 생성 해 보았습니다. delegate : cancelButtonTitle : destructiveButtonTitle : otherButtonTitles :하지만 그것은 동일했지만 현재 코드는 다음과 같습니다.
UIActionSheet* actionMenu = [[UIActionSheet alloc] init];
actionMenu.delegate = self;
actionMenu.title = folderentry.Name;
actionMenu.cancelButtonIndex = 0;
[actionMenu addButtonWithTitle:NSLocalizedString(@"str.menu.cancel",nil)];
[self addActiveButtons:actionMenu forEntry:folderentry];
[actionMenu showInView:[self.navigationController view]];
[actionMenu release];
addActiveButtons 메서드는 기본적으로 어떤 코드를 추가 할 것인지를이 같은 코드를 사용하여 구성합니다.
[menu addButtonWithTitle:NSLocalizedString(@"str.menu.sendbyemail",nil)];
가로 모드에서는 여섯 개의 버튼이있을 수 있으므로 actionSheet는 이와 같이 표시됩니다.
내 대표는 다음과 같이 응답; 도시 된 실시 예에서
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"Cancel Button Index is : %d",actionSheet.cancelButtonIndex);
NSLog(@"Button clicked was for index : %d",buttonIndex);
NSString *command = [actionSheet buttonTitleAtIndex:buttonIndex];
DLog(@"COMMAND IS: %@ for index: %d",command,buttonIndex);
if ([command isEqualToString:NSLocalizedString(@"str.menu.sendbyemail",nil)]) {
// Do stuff here
}
if (... similar blocks ...) { }
}
, 나는 cancelButtonIndex 예상대로 0임을 발견하고,하지만 그래서 처음 다른 버튼의 버튼 지수입니다! 즉, 두 번째 (Save to Photos) 버튼을 클릭하면 내 디버그 출력이 다음과 같이 표시됩니다.
취소 버튼 지수 : 1 개
명령은 : 나는 다양한 시도했습니다 1
: 인덱스에 대해 이메일로 보내기 0
버튼 인덱스이었다 클릭 순열과 지금 내가 뭘 놓치고 있는지 궁금해 내 머리를 찢어. 나는 주변에서 좋은 검색을했지만 사람들이 가진 것처럼 보이는 다른 문제는 기능보다는 디스플레이 문제입니다.
어디서 잘못 본 사람이 있습니까?
추신. 나는 이것이 가장 훌륭한 UI 경험이 아니라는 것을 알고 있지만 대부분의 사용자가 실제로 대부분의 시간대에 있거나 앱의 iPad 버전을 사용하고 있기 때문에 내가 할 수 있다고 가정 한 동작 시트 기본 동작을 수락 할 준비가되어있는 것으로 나타났습니다. 실제로 작동하도록하십시오!
설명을 추가하려면이 기술을 사용하려면 취소 단추 제목으로 nil을 initWithTitle : delegate : cancelButtonTitle : destructiveButtonTitle : otherButtonTitles : 메서드에 전달해야합니다. 그런 다음이 답에서 설명한대로 취소 버튼을 마지막에 추가 할 수 있습니다. – kalperin
같은 문제가 발생했습니다. 버그 접수 : rdar : // 11361874 또는 http://www.openradar.me/11361874 –