0

ATMHudをuitableviewcontrollerサブビューに追加しようとすると、機能しますが、スクロールが無効にならず、テーブルビューが上にない場合、hudビューが表示されません。私がしたことは、機能するtabBarController.viewに追加されましたが、これが良いアイデアであるかどうか、または後で問題が発生する可能性があるかどうかを確認したいと思います。

もう1つの質問は、tabBarController.viewフレームで、画面全体または下部のみです。画面の中央にatmhudが表示されるのはなぜですか?

前もって感謝します!

ヤン

============ uitableviewcontrollerでself.viewをリセットし、tableviewを個別に追加する方法を示すブログ投稿を見つけました

UITableViewControllerと固定サブビュー

- (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];                       
}

この後、hudをself.viewに追加すると、下部のテーブルビューを無効にできるようになります。これがテーブルビューを設定する良い方法かどうか教えてください

4

1 に答える 1

1

タブバーを使用する際の問題は、hudがモーダルになり、ユーザーがタブを変更できないことです。

テーブルビューは「隠蔽」される可能性があるため、メインビューではないようです。プライマリビューでない場合は、ATMHudをself.viewに追加します。tableViewがself.viewと同じである場合は、それに新しい透過ビューを追加してから、そのビューにHUDを追加します。

tabBarController.viewは、タブ付きビューをホストするビューです。サイズ(またはフレーム)を確認する場合は、NSStringFromCGRect(self.tabBarController.frame);を使用してログに記録します。

編集:私はちょうどテストをしました、ATMHudはUIをブロックします。私が考えることができるのは、必要な場所(現在のビューのサブビューの上部)に挿入していないということだけです。これを行うデモプロジェクトがあります。

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

ハッドの下のボタンはアクティブではありません-実際には、ビュー内の何もアクティブではありません(おそらくナビゲーションバーはライブになります)

ARC化され、フィールドテストされたバージョンが必要な場合は、ここで入手できます

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
于 2012-08-13T17:39:31.613 に答える