2012-08-13 3 views
0

uitableviewcontroller 서브 뷰에 ATMHud를 추가하려고하면 작동하지만 스크롤이 비활성화되지 않으며 tableview가 위에 있지 않으면 허드 뷰를 볼 수 없습니다 . 내가 무슨 짓을하는지 tabBarController.view 그게 좋은 생각인지 또는 나중에 내가 그것으로 문제가있을 수 있습니다 알아 내고 싶습니다.tabBarController.view에 ATMHud를 추가하는 것이 이치에 맞습니까?

또 다른 질문은 tabBarController.view 프레임은 전체 화면 또는 맨 아래 부분입니다. 화면 중앙에 앳 무드가 어떻게 나타나나요?

미리 감사드립니다.

============ 는 self.view를 재설정하고있는 UITableViewController

UITableViewController and fixed sub views

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    if (!tableView && 
     [self.view isKindOfClass:[UITableView class]]) { 
      tableView = (UITableView *)self.view; 
    } 

    self.view = [[[UIView alloc] initWithFrame: 
     [UIScreen mainScreen].applicationFrame] autorelease]; 
    self.tableView.frame = self.view.bounds; 
    self.tableView.contentInset = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0); 
    [self.view addSubview:self.tableView]; 

    UIView *fixedBar = [[UIView alloc] initWithFrame: 
     CGRectMake(0.0, 0.0, self.view.bounds.size.width, 44.0)]; 
    fixedBar.backgroundColor = [UIColor colorWithRed: 
     0.0 green:1.0 blue:0.0 alpha:0.7]; 
    [self.view addSubview:fixedBar]; 
    [fixedBar release];      
} 
에 별도의 tableview을 추가하는 방법을 보여줍니다 블로그 게시물 발견

이렇게하면 self.view에 hud를 추가하면 하단의 tableview를 비활성화 할 수 있습니다. 테이블 뷰를 설정하는 좋은 방법이 있다면 알려주십시오

답변

1

탭 표시 줄을 사용할 때의 문제는 hud가 모달이며 사용자가 탭을 변경할 수 없다는 것입니다.

"덮어 버릴"수 있으므로 tableview 기본보기가 아닌 것처럼 들립니다. 기본보기가 아닌 경우 self.view에 ATMHud를 추가하십시오. tableView가 self.view와 같은 경우에는 새로운 투명한 뷰를 추가 한 다음 해당 뷰에 HUD를 추가합니다.

tabBarController.view는 탭보기를 호스팅하는보기입니다. 크기 (또는 프레임)를 보려면 NSStringFromCGRect (self.tabBarController.frame)를 사용하여 기록하십시오.

EDIT : 방금 테스트를 수행했으며 ATMHud는 UI를 차단합니다. 내가 생각할 수있는 모든 당신이 필요로하는 곳에 당신이 그것을 삽입하지 않은 것입니다 나는이 할 어디 데모 프로젝트를 (현재보기의 하위 뷰의 상단에.) :

hud = [[ATMHud alloc] initWithDelegate:self]; 
[self.view addSubview:hud.view]; 
[hud setCaption:@"Howdie"]; 
[hud setActivity:YES]; 
[hud show]; 
[hud hideAfter:5]; 

HUD의 아래 버튼되지 않습니다 활성 - 뷰에서 사실 아무것도 활성화되지 당신이 원하는 경우

는 ARCified 및 필드 테스트 버전은, 당신이 잡아 수 있습니다 (아마도 탐색 모음하지만 살아있는 것)이 here

EDIT2 : 당신의 문제에 대한 해결책 아래에 있습니다. ATMHud 블록의 표를 얻기에서 클릭, 아래의 코드가 스크롤을 중지합니다 :

- (void)hudWillAppear:(ATMHud *)_hud 
{ 
    self.tableView.scrollEnabled = NO; 
} 
- (void)hudDidDisappear:(ATMHud *)_hud 
{ 
    self.tableView.scrollEnabled = YES; 
} 

의 의견을 덤프 : 답장을 보내

#import <QuartzCore/QuartzCore.h> 

#import "UIView+Utilities.h" 

@interface UIView (Utilities_Private) 

+ (void)appendView:(UIView *)v toStr:(NSMutableString *)str; 

@end 

@implementation UIView (Utilities_Private) 

+ (void)appendView:(UIView *)a toStr:(NSMutableString *)str 
{ 
    [str appendFormat:@" %@: frame=%@ bounds=%@ layerFrame=%@ tag=%d userInteraction=%d alpha=%f hidden=%d\n", 
     NSStringFromClass([a class]), 
     NSStringFromCGRect(a.frame), 
     NSStringFromCGRect(a.bounds), 
     NSStringFromCGRect(a.layer.frame), 
     a.tag, 
     a.userInteractionEnabled, 
     a.alpha, 
     a.isHidden 
     ]; 
} 

@end 

@implementation UIView (Utilities) 

+ (void)dumpSuperviews:(UIView *)v msg:(NSString *)msg 
{ 
    NSMutableString *str = [NSMutableString stringWithCapacity:256]; 

    while(v) { 
     [self appendView:v toStr:str]; 
     v = v.superview; 
    } 
    [str appendString:@"\n"]; 

    NSLog(@"%@:\n%@", msg, str); 
} 

+ (void)dumpSubviews:(UIView *)v msg:(NSString *)msg 
{ 
    NSMutableString *str = [NSMutableString stringWithCapacity:256]; 

    if(v) [self appendView:v toStr:str]; 
    for(UIView *a in v.subviews) { 
     [self appendView:a toStr:str]; 
    } 
    [str appendString:@"\n"]; 

    NSLog(@"%@:\n%@", msg, str); 
} 

@end 
+0

감사합니다. 이것으로 인해 탭 바가 고정되지 않았다는 것을 깨닫지 못했습니다. 나는 그것의 uitableviewcontroller 경우 tableview 맨 위에보기를 넣어 쉬운 방법이 없다고 생각합니다. self.view 추가 할 때 tableview 추가하지만 그것을 동결하지 않고 화면을 스크롤 할 수 있습니다. 나는 그것이 질문 이냐, 제목이 나를 투표하게 만들었 을까? – Yan

+1

나는이 클래스를 사용하고있다. (나는 github에 그것의 포크를 가지고있다.) 그리고 그저 훌륭했다. 나는 HUD가 사용자 액션을 가로 채기 전에 추가 된 뷰를 추가해야만했지만, ATMHud를 보았을 때 똑같은 일을했다. 더 조사해야 겠어 ... 곧 여기로 돌아올 게. –

+0

답장을 보내 주셔서 다시 한 번 감사드립니다.나는 이것이 테이블 뷰 컨트롤러를 가질 때만 발생한다고 생각한다. 내가 taleview있는 일반 viewcontroller 있고 [self.view addsubivew : hud.view] 다음 ATMHud 사용자 작업을 가로 채지 않습니다. 나는 그것이 tableview 컨트롤러에있을 때 tableview 맨 위에 view를 두는 것이 더 어렵다는 것을 여기서 몇 개의 게시물을 읽었다. 그것이 맞는지 확실하지 않습니다. – Yan

관련 문제