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 回答