2014-12-08 3 views
0

iOS 7에서는 UIAlertView가 표시 될 때 버튼에 자동으로 exclusiveTouch=YES이 설정되어있는 것처럼 보입니다. 이렇게하면 경고보기에서 하나 이상의 단추를 동시에 누르면 아무 일도 일어나지 않습니다.UIAlertView exclusiveTouch on buttons iOS8

이것은 iOS 8에서는 발생하지 않습니다. UIAlertView에 2 개의 버튼이있는 경우. 그리고 나는이 두 버튼을 동시에 누르기 만하면 앱이 멈 춥니 다.

UIAlertView에있는 UIButton에 액세스 할 수 없습니다. 그 문제에 관해서는 UIAlertView의 하위 뷰에 액세스 할 수 없습니다. alertView.subview은 라이프 사이클의 어느 부분에 관계없이 빈 배열을 반환합니다.

+0

제발, 설명에 코드를 추가하십시오. 또한 iOS8의 경우 UIAlertViewController를 사용할 수 있습니다. – gronzzz

+0

코드를 게시 할 필요가 없습니다. 나는 UIAlertView 내부의 버튼에 'exclusiveTouch'부울 속성이 항상 NO로 설정되어 있다는 진술을 표현했습니다. 이 명령문은 true 또는 false입니다. 나는 이것을 오히려 이론적 인 질문으로 본다. 게다가, 나는 표면 상으로는 질문의 복잡성을 더해주는 UIAlertView의 내 하위 클래스를 사용하고 있습니다. – ancajic

답변

2

문제점에 대한 해결책을 찾을 수있었습니다. 첫째는 view 변수 내부의 모든 파단의 어느 클래스 UIButton 또는 UIControl의 것을보고 혼란 한에서

-(void)didPresentAlertView:(UIAlertView *)alertView 
{ 
    UIView *view = ((UIApplication*)[UIApplication sharedApplication]).keyWindow.rootViewController.presentedViewController.view; 
    [self setExclusiveTouchForView:view]; 
} 

-(void) setExclusiveTouchForView:(UIView*)view 
{ 
    for (UIView *subview in view.subviews) { 
     subview.exclusiveTouch = YES; 
     [self setExclusiveTouchForView:subview]; 
    } 
} 

: 나는 UIAlertView의 대리자 메서드를 구현합니다.

실제로 exclusiveTouch 속성을 에 설정해야 할 필요는 없습니다. 하위보기는 모두입니다. 그러나 코드 복잡성을 줄이기 위해 이렇게 게시했습니다.

잘 작동합니다. UIAlertView의 버튼을 동시에 누르면 앱이 더 이상 정지되지 않습니다. 프레스 중 하나만 받아들입니다.

+0

iOS 8에서 uialertview가 아닌 ​​uialertcontroller를 사용해야합니다. – Fogmeister

+0

내 응용 프로그램은 iOS7과 iOS8을 모두 지원하며, 현재 IF-THEN 코드 곱셈을 피하는 가장 좋은 방법 인 것 같습니다. – ancajic

+0

아, 괜찮아, – Fogmeister