2013-10-11 2 views
4

UIAlertView에서 텍스트 상자에 입력 할 때 백그라운드의 ImageButton이 전단력을 시작합니다. 텍스트가 이미지에 가까워 질 때만 발생합니다.iPhone/iPod 버튼 백그라운드에서 UIAlertView TextBox로 전환합니다.

I 불투명로 설정 시도
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"... number" 
               message:nil 
               delegate:self 
             cancelButtonTitle:@"Cancel" 
             otherButtonTitles:@"Ok", nil]; 

[alert setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
[[alert textFieldAtIndex:0] setKeyboardType:UIKeyboardTypeNumberPad]; 
[[alert textFieldAtIndex:0] becomeFirstResponder]; 
[alert setTag:1]; 
[alert setOpaque:true]; 
[alert show]; 

//EDIT 
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (alertView.tag == 2) 
    { 
     NSString* title = [alertView buttonTitleAtIndex:buttonIndex]; 
     if ([title isEqualToString:@"Cancel"]) 
     { 
      [self doSomething1]; 
     } 

     if([alertView.title isEqualToString:@"Are you sure?"] && [title isEqualToString:@"YES"]) 
     { 
      [self doSomething2]; 
     } 
    } 
} 

- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView 
{ 
    if (alertView.tag == 1){ 
     NSString *inputText = [[alertView textFieldAtIndex:0] text]; 
     if([inputText length] == 10) 
     { 
      NSUserDefaults* def = [NSUserDefaults standardUserDefaults]; 

      [def setObject:inputText 
        forKey:@"FIELD"]; 
      [def synchronize]; 
      return YES; 
     } 
     else 
     { 
      return NO; 
     } 
    } 
    return YES; 
} 

는, I는 Z-색인 값을 찾는 시도 및 I 또한 스케일링 시도한 다음과 같이

The problem

alertview위한 코드는 이미지를 최대한 작게 내려야합니다. 스크린 샷을 찍는 것은 도움이되지 않습니다. 이것은 iOS 7에서만 발생합니다.

+0

내 응용 프로그램에서 이러한 유형의 경고보기를 사용하고 있습니다. 내 마지막에는 아무런 문제가 없습니다. 이미지보기 또는 다른 프로세스를 사용하여 다른 프로세스를 수행하고 있습니까? – Yuvrajsinh

+0

안녕하세요. 아니 나는 아냐. 이미지가 스토리 보드 디자이너를 통해로드되었습니다. –

+0

사용자가 입력하는 동안 이미지에 액세스하지 않습니다. –

답변

1

UIAlertView는 나머지보기 컨트롤러와 동일한 UIWindow에 표시되지 않습니다. 그들은 자신의 UIWindow에 windowLevel이 UIWindowLevelAlert으로 표시됩니다. 이 다른 창은 투명하고 (주로) 기본 창 위에 렌더링됩니다. 이렇게하면 UIAlertView 개체가 화면에있는 다른보기와 상호 작용하지 않게됩니다. 기본 UIView 클래스의 속성을 수정하지 마십시오.

위에 표시된 코드는 if (alertView.tag == 1)if (alertView.tag == 2)이지만 태그 값이 1 인 UIAlertView 만 생성합니다. 두 번째 경고를 생성하는 다른 곳이 있습니까? 첫 번째 경고가 실종 애니메이션을 완료하기 전에 두 번째 경고를 표시 할 가능성이 있습니까? 그것은 그래픽 눈물을 일으키는 것으로 알려져 있습니다.

대리자 메서드 -alertViewShouldEnableFirstOtherButton:은 UIAlertView의 -drawRect: 메서드 내에서 호출 할 수 있습니다. 그리기 방법은 그래픽이 찢어지는 것을 피하기 위해 매우 빠릅니다. 귀하는 디스크 쓰기 작업을 수행하는 NSUserDefaults -synchronize을 호출합니다. 응답 값을 결정하는 것 이외에는 -alertViewShouldEnableFirstOtherButton: 메소드에서 아무런 작업도 수행하지 않아야합니다. 텍스트 필드에 대한 변경 사항을 알리려면 UITextFieldDelegate로 자신을 할당하고 -textField:shouldChangeCharactersInRange:replacementString:을 구현하십시오. 이 방법은 NSUserDefaults -synchronize에서 전화하는 것이 안전해야합니다.

팁을 추가하면 PSPDFAlertView을 사용하여 코드를 훨씬 쉽게 관리 할 수 ​​있습니다.

관련 문제