5

最初に以下のリンクからプロジェクトをダウンロードしてから、質問を続けることをお勧めします(36kb のみ) 。

リンクをダウンロード

最初に私が持っているものは以下のようなものです。

ここに画像の説明を入力

[マイ オフィス] ボタンをクリックすると、actionSeenButton印刷するアクションが呼び出されますNSLog(@"actionSeenButton");

- (IBAction)actionSeenButton:(id)sender {
    NSLog(@"actionSeenButton");
}

これは完璧に機能します。

[非表示のボタンを表示] をクリックすると、ビューが 100 ずつスライドし、下の画像に示すように、上部にある画像とボタンが表示されます

ここに画像の説明を入力

使用コードは

- (IBAction)showHiddenButton:(id)sender {
    CGAffineTransform translation = CGAffineTransformIdentity;
    translation = CGAffineTransformMakeTranslation(0, 100);
    [UIView beginAnimations:nil context:nil];
    self.view.transform = translation;
    [UIView commitAnimations];
}

このボタンをクリックすると、actionHiddenButton印刷するアクションが呼び出されますNSLog(@"actionHiddenButton");

- (IBAction)actionHiddenButton:(id)sender {
    NSLog(@"actionHiddenButton");
}

しかし、問題は、表示されている新しいボタンをクリックすると、アクションが呼び出されないことです。

なぜこれが起こっているのですか?


ノート

一番上の隠しボタンを y=-70 から y=170 に移動すると、アクションが呼び出されます。

サンプルプロジェクトはこちらからダウンロードできます

私が実装したかったのは、ビューを下に移動して、上部に 3 つのボタン (メニューとして) を 1 行で表示することです。

4

3 に答える 3

1

ボタンが別のビューのフレームの後ろにないことを確認してください。ボタンが表示されていても、それを覆っているものがあると機能しません。現時点ではxcodeにアクセスできませんが、ビューの「スタック」がボタンの操作を禁止していると思います。ボタンは本質的に uiview であり、ビューでできるのと同じアニメーションをすべてボタンとラベルに行うことができます。あなたの最善の策は、ビューをバックグラウンドでそのままにして、ボタンを移動することです. 「隠し」ボタンはメインの「ビュー」階層の一部ではないため、そこに問題があります。

さらに調査すると、問題は自動レイアウトに関連しており、ボタンオブジェクトがビュー階層に留まることを確認しています。自動レイアウトをオフにすると、どこに問題があるかがわかります。メインビューをアニメーション化すると、「非表示」ボタンがビューから外れて非アクティブになります。最も簡単な解決策は、ボタンをアニメーション化することです。あなたが持っているものに最も近い次善の解決策は、別のビューを「メイン ビュー」に追加し、そのビューにボタンを配置することです。また、なぜその背景画像が2回あるのですか? ビューの背景色を同じ黄色に設定してみませんか?

于 2013-09-24T23:19:07.397 に答える
0

イッピー!!! 以下は私がした方法です。

.h

新しい変数を追加しました。

@property (retain, nonatomic) NSString *hideStatus;

.m

-(void) viewDidAppear:(BOOL)animated {
    NSLog(@"viewDidAppear");
    CGAffineTransform translation = CGAffineTransformIdentity;
    translation = CGAffineTransformMakeTranslation(0, -100);
    self.view.transform = translation;
    self.view.clipsToBounds = YES;
    [UIView commitAnimations];
    self.view.frame = CGRectMake(0,-80,320,560);
    hideStatus = @"hidden";
}

- (IBAction)showHiddenButton:(id)sender {
    NSLog(@"hideStatus===%@", hideStatus);
    CGAffineTransform translation = CGAffineTransformIdentity;
    if ([hideStatus isEqualToString:@"hidden"]) {
        translation = CGAffineTransformMakeTranslation(0, 0);
        hideStatus = @"shown";
    } else {
        translation = CGAffineTransformMakeTranslation(0, -100);
        hideStatus = @"hidden";
    }

    [UIView beginAnimations:nil context:nil];
    self.view.transform = translation;
    self.view.clipsToBounds = YES;
    [UIView commitAnimations];
}

サンプルプロジェクトを添付します。ここからダウンロードできます。

于 2013-09-25T10:52:44.227 に答える
0

あなたのプロジェクトをダウンロードしましたself.viewactionHiddenButtonはフレーム内にありません。別のビューでアニメーション化する必要がありますcontrols
問題を確認したい場合は、ビューが変換された後に に設定clipsToBoundsYESます。お気に入り

    self.view.transform = translation;
    self.view.clipsToBounds = YES;
于 2013-09-25T06:36:07.457 に答える