2013-04-07 2 views
0

행이 여러 개인 UITableView가 있습니다.iOS : UITableView 위에있는 UIView를 제거하면 테이블과 상호 작용할 수 없게됩니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PopUp *myPopUp = [[PopUp alloc] initWithFrame:CGRectMake(0, 0, 320, 568)]; 
    [self.view addSubview:myPopUp]; 
} 

나는 펜촉에서 내 사용자 지정 UIView의 팝업을로드하고 있습니다 :

사용자가 행을 탭하면, (사용자 지정 UIView의입니다) 사용자 지정 팝업은 테이블의 상단에 나타납니다 팝업에는

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self loadNib]; 
    } 
    return self; 
} 

- (void) loadNib 
{ 
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopUp" owner:self options:nil]; 
    UIView *mainView = [subviewArray objectAtIndex:0]; 
    [self addSubview:mainView]; 
} 
는 종료 팝업을 유발 누르면 버튼이있다 :

- (IBAction)closePopUp:(id)sender 
{ 
    [self removeFromSuperview]; 
} 

버튼을 누를 때 팝업이 없어진다. 그러나 아래에있는 UITableView는 더 이상 상호 작용할 수 없습니다 (예 : 사용자가 표를 스크롤하거나 다른 행을 탭할 수 없음 등). 나는 PopUp을 사라지게하고 테이블을 완전히 상호 작용하도록하고 싶습니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있는지 설명 할 수 있습니까? 감사! 데이터의 행 스크린

  1. jQuery과 함께 편집


    : http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#0 행이 선택

  2. , MyPopup을 상위에 표시 : http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#1

  3. 때 "x"사용자 정의 버튼을 누르면 closePopUp이 호출됩니다. superview에서 oves myPopup : http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#2

  4. 사용자는 지금 테이블과 상호 작용할 수 없습니다. 사용자는 등, 테이블을 스크롤 행을 선택할 수 없습니다

답변

2

당신은 실제로 당신이 nib 파일에서로드 뷰를 제거하지만, 부모는 (0, 0, 320, 568) RECT 내의 모든 터치를 캡처 다른 빈의 UIView입니다. closePopUp 방법에서 수퍼를 제거

봅니다 :

[self.superview removeFromSuperview]; 
+0

아, 이렇게했습니다. 고마워요! – Chun

2

내가 특정 경우에 무슨 일이 일어나고 있는지 모르겠지만, 나는 UITableView에 하위 뷰를 추가하는 등의 예상치 못한 동작이 발생할 수 있음을 알 수 있습니다 이것은 일반적으로 나쁜 생각입니다.

어떤 일이 벌어지고 깨끗한 구조를 얻으려면 팝업보기를 테이블보기가 아닌 창에 추가하는 것이 좋습니다.

[self.view.window addSubview:myPopUp]; 
+0

난 당신의 솔루션을 시도했습니다,하지만 난 제거 할 때 MyPopup을 사용자가 모든 화면과 상호 작용할 수 없습니다. 그게 내 문제를 명확히하는 데 도움이되면 스크린 샷으로 내 게시물을 편집했습니다 : http://imgur.com/PlIufHI,xGKxUul,qkt27oZ ... 내 디버깅 프로세스 중에 뭔가를 발견했습니다 : 만약 프레임을 설정하면 0,0이면 사용자는 myPopUp이 아닌 테이블 뒤에서 상호 작용할 수 있습니다. 프레임이 320,568이면 사용자는 myPopUp과 상호 작용할 수 있지만 그 뒤에있는 테이블은 상호 작용할 수 없습니다. – Chun

+0

@Chun Xcode 중단 점 다음에이 명령을 입력하여 뷰 계층을 검사 할 수 있습니다 :'po [self recursiveDescription]'. 이와 같은 뷰 문제를 디버깅 할 때 편리합니다. –

관련 문제