0

キーボード用のボタンをたくさん作りました。ボタンをクリックすると、大きなボタンとして表示されます。ボタンをクリックせずに、大きなボタンとして表示できますか?(iPhoneのように)いくつかのサンプルコードを教えてください。

この写真(デフォルト)にあるように、ボタンを直接クリックするのではなく、ボタンの近く/周囲をクリックするだけですが、テキストフィールドに文字が表示されます!ボタン周辺の条件を設定するには?

ボタンをクリックせずに

4

2 に答える 2

0

キーボードのように、強調表示されたボタンの上にボタンの大きな画像を表示することを指していますか?

もしそうなら、UIControlStateTouchDown のアクションを設定して、ボタンが強調表示されたときを確認し、最終的には、押されたボタンの上にその大きなボタン画像を追加することを検討します。次に、UIControlStateTouchUpInside、UIControlStateTouchUpOutside、および UIControlStateTouchCancel のアクションを追加して、大きなボタン イメージを削除します。

大きなボタン イメージを追跡するには、プロパティを使用して追跡できます。ボタンに使用していると思われるUIButtonをサブクラス化し、より大きなボタン画像のプロパティを追加して、より大きなボタン画像がその上にあるボタンに関連付けられるようにすることをお勧めします。

于 2012-09-06T03:03:43.517 に答える
0

あなたの投稿はあまり明確ではありませんが、のボタンズーム機能を複製しようとしていると思いますUIKeyboard

この場合、これを実現するための簡単な手順をいくつか紹介します。

コントロール状態「タッチアップインサイド」と「タッチダウン」のカスタムアクションをボタンに追加します。viewDidAppearすべてが所定の位置に移動するまで、実行ループを妨害しないように、おそらくこれを行うでしょう。たぶん、少し遅れてこれを実行することは有益かもしれません. 以下に示すようにループでこれを行うと、これらのアクションを、メイン ビューのサブビュー配列内のクラス「UIButton」のすべてのオブジェクトに自動的に追加できます。

    for (UIButton *button in self.view.subviews) {
    if ([button isKindOfClass:[UIButton class]]) {
        [button addTarget:self action:@selector(anyButtonDown:) forControlEvents:UIControlEventTouchDown];
        [button addTarget:self action:@selector(anyButtonUp:) forControlEvents:UIControlEventTouchUpInside];
    }
}

touch down メソッドを使用してボタンをズームし、内側を touch up してボタンを元の状態に戻し、ボタンのテキスト値をテキスト フィールドの末尾に追加します。

この例のために、私はUILabel.

これらのメソッドをUIButton引数として使用していることに注意してください。これにより、すべてのボタンに対してアクションを作成しなくても、このアクションを呼び出したボタンの変換を変換できます。

- (void)anyButtonDown:(UIButton *)sender
{
    [self.view bringSubviewToFront:sender];
    [UIView animateWithDuration:0.1 animations:^{
        [sender setTransform:CGAffineTransformConcat(CGAffineTransformMakeScale(1.3, 1.3), CGAffineTransformMakeTranslation(0, -25))];
    }];
}

ここでは、ボタンが離されたときに「送信者」の変換を元の変換に戻します。このアニメーションは完了ハンドラーを使用して作成され、ボタンのアニメーションが元の状態に戻るときに、そのボタンに指定されたテキストを現在ラベルにあるテキストの末尾に追加できるようにします。

注:これが機能するためには、ボタンが表す文字をボタンの として入力したと仮定していますtextLabel

- (void)anyButtonUp:(UIButton *)sender
{
    [UIView animateWithDuration:0.1 animations:^{
        [sender setTransform:CGAffineTransformConcat(CGAffineTransformMakeScale(1.0, 1.0), CGAffineTransformMakeTranslation(0, 0))];
    }completion:^(BOOL done){
        [textLabel setText:[textLabel.text stringByAppendingString:sender.titleLabel.text]];
    }];
}
于 2012-09-06T03:40:25.647 に答える