2012-07-10 3 views
1

I,의 TableView가 setHidden 기능은 내 handleLongPress 기능에

를 호출 할 때 사라지지 않는다 (CF : 제스처 인식), 나는있는 TableView 표시 만들기 위해 노력하고, 마지막에, 제스처 때 사라, 제거합니다. 그 때문에 제스처 인식기의 state 속성과 tableView의 setHidden 함수를 사용합니다. 불행히도, 나타나는 tableView, 나던 사라집니다. 이유는 모르겠다. 당신은 생각이 있다면, 나는 감사 할 것입니다. 당신이 다음 거기에서 이동 속성 또는 바르에있는 tableview를 캡처해야

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer 
{ 
    UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(gestureRecognizer.view.center.x - 10, gestureRecognizer.view.center.y - 10, 100, 100)]; 

    tableView.layer.cornerRadius = 20.0; 
    tableView.layer.frame = CGRectInset(tableView.layer.frame, 20, 20); 


    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
    [self addSubview:tableView]; 
    } 

    if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
    { 
     [tableView setHidden:YES]; 
    } 
} 

답변

2

당신은 화면 여부에 추가 테이블 뷰 매번 다시와 하나되어 여기

내 코드입니다 당신은 하나 개의 테이블보기를 원하는 메신저 가정, 다음이 인터페이스에서 문제

를 해결하는있는 tableView 속성에게 implem에

@interface .. 
{ 

} 
@property(nonatomic, retain) UITableView *tableView; 
@end 

합성이있다 entation ... 속성에 대한 자세한 내용

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer 
    { 
     if(tableView==nil) 
     { 
     self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(gestureRecognizer.view.center.x - 10, gestureRecognizer.view.center.y - 10, 100, 100)] autorelease]; 
     [self addSubview:self.tableView]; 
    } 

     self.tableView.layer.cornerRadius = 20.0; 
     self.tableView.layer.frame = CGRectInset(tableView.layer.frame, 20, 20); 


     if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
      [self.tableView setHidden:false]; 
     } 

     if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
     { 
      [self.tableView setHidden:YES]; 
     } 
    } 

this 체크 아웃 당신이있는 tableview를 추가하기 때문에 .. 다니엘

+0

놀랍게도 tableview는 한 번 표시되지만 한 번 사라집니다. 선택하면 "if"블록이 정기적으로 호출됩니다. 마치 setHidden 함수가 YES에서 NO로 두 번 호출 될 수 없습니다. 그리고 그것은 불투명 한 함수와 같은 것입니다. –

0
if(gestureRecognizer.state == UIGestureRecognizerStateEnded) 
{ 
    [tableView removeFromSuperview]; 
} 

, 당신이 그것을 제거해야 도움이되기를 바랍니다. 그렇지 않으면 tableview outisde를 longPressGestureRecognizer 메서드를 추가하고 필요에 따라 숨기기/숨기기 취소

+1

이미 시도했지만 작동하지 않았다 –

+0

setHidden : YES로 시도해보고 거기서 Superview 라인을 제거하십시오. tableview가 여전히 보이면 tableView가 추가되거나 다른 곳에 표시됩니다. –

관련 문제