UIActionView를 UIAlertView 위에 표시하려고합니다. 그러나 아래 코드에 따르면, UIAlertView에서 숨겨집니다. (아래 스크린 샷을 참조하십시오.) 먼저 사용자 지정 UIAlertView를 보여주고 사용자가 단위를 누른 다음 UIActionSheet를 표시합니다. 그러나 UIAlertView에서는 숨겨져 있습니다. 아래는 내 코드 집합입니다.UIActionSheet를 UIAlertView 맨 위에 표시하는 방법
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if (actionSheet.tag == 2) {
return;
}
if (actionSheet.tag == 1 && (int)buttonIndex == 4) {
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 310, 60)];
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(5,0,100,25)];
label1.text = @"Dimensions:";
[v addSubview:label1];
UITextField *textField1 = [[UITextField alloc] initWithFrame:CGRectMake(100,0,60,25)];
textField1.borderStyle = UITextBorderStyleRoundedRect;
textField1.placeholder = @"Width";
textField1.keyboardAppearance = UIKeyboardAppearanceAlert;
[textField1 setValue:[UIFont fontWithName: @"San Francisco" size:12] forKeyPath:@"_placeholderLabel.font"];
textField1.delegate = self;
[v addSubview:textField1];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(172,0,25,25)];
label.text = @"X";
[v addSubview:label];
UITextField *textField3 = [[UITextField alloc] initWithFrame:CGRectMake(195,0,60,25)];
textField3.placeholder = @"Height";
textField3.borderStyle = UITextBorderStyleRoundedRect;
textField3.keyboardAppearance = UIKeyboardAppearanceAlert;
[textField3 setValue:[UIFont fontWithName: @"San Francisco" size:12] forKeyPath:@"_placeholderLabel.font"];
textField3.delegate = self;
[v addSubview:textField3];
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(5,30,50,25)];
label2.text = @"Units:";
[v addSubview:label2];
UITextField *textField4 = [[ReadOnlyTextField alloc] initWithFrame:CGRectMake(100,30,155,25)]; //145
textField4.placeholder = @"-- Select an Unit --";
textField4.borderStyle = UITextBorderStyleRoundedRect;
textField4.keyboardAppearance = UIKeyboardAppearanceAlert;
[textField4 setValue:[UIFont fontWithName: @"San Francisco" size:12] forKeyPath:@"_placeholderLabel.font"];
[textField4 addTarget:self action:@selector(selectUnit:) forControlEvents:UIControlEventTouchDown];
textField4.delegate = self;
[v addSubview:textField4];
av = [[UIAlertView alloc] initWithTitle:@"Dimensions" message:@"" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Download", nil];
[av setValue:v forKey:@"accessoryView"];
[av show];
}
-(void)selectUnit:(id)sender
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select an option" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
actionSheet.tag = 2;
[actionSheet addButtonWithTitle:@"Pixels"];
[actionSheet addButtonWithTitle:@"Inches"];
[actionSheet addButtonWithTitle:@"Centimetres"];
[actionSheet addButtonWithTitle:@"Millimetres"];
[actionSheet addButtonWithTitle:@"Cancel"];
[actionSheet showInView:self.view]; //[UIApplication sharedApplication].keyWindow.rootViewController.view
}
어떻게 사용자 정의 UIAlertView 위에 UIACtionSheet를 표시 할 수 있습니까 ????
코드의 정확한 흐름을 설명 할 수 있습니까? 먼저 UIActionSheet를 호출하면 UIActionsheet에 대한 응답이 UIAlertView이고 UIAlertView 작업에 대해 새 UIActionSheet를 표시하려고한다고 생각합니다. –
@SiddheshMhatre 먼저 UIActionSheet를 열고 옵션을 선택하십시오. 옵션을 선택하면 사용자 정의 UIAlertView가 열립니다. 그런 다음 UIAlertView (단위 필드)에서 사용자 정의 textfield를 선택하면 UIActionSheet를 다시 엽니 다. 이 UIActionSheet는 이전 UIAlerView에서 숨겨져 있습니다 (첨부 된 이미지 참조). iPad 용 –