gpt4 book ai didi

ios - UIButton 像苹果键盘一样扩展触摸区域

转载 作者:行者123 更新时间:2023-11-29 12:34:05 25 4
gpt4 key购买 nike

我有一个包含三个小的自定义 UIButtons (w:25,h:35) 的 View ,我觉得很难获得触摸事件。

我已经为 touchUpInside 事件添加了目标。

[button addTarget:self action:@selector(keyPressed:) forControlEvents:UIControlEventTouchUpInside];

但正如我所说,我自己似乎很容易错过它。然后我查看了苹果键盘中的类似按钮。它们似乎有更大的触摸区域,特别是带有字母 “A”“L” 的按键。我想知道他们是如何设法做到这一点的。

任何帮助和代码示例将不胜感激。

最佳答案

创建一个继承 UIButton 的新类并覆盖此函数:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
int errorMargin = 8;
if ([self.titleLabel.text isEqualToString:@"A"] || [self.titleLabel.text isEqualToString:@"a"]) {
CGRect largerFrame = CGRectMake(0 - 20, 0 - errorMargin, self.frame.size.width + 22, self.frame.size.height + errorMargin*2);
return (CGRectContainsPoint(largerFrame, point) == 1) ? self : nil;
}
if ([self.titleLabel.text isEqualToString:@"L"] || [self.titleLabel.text isEqualToString:@"l"]) {
CGRect largerFrame = CGRectMake(0 - 2, 0 - errorMargin, self.frame.size.width + 20, self.frame.size.height + errorMargin*2);
return (CGRectContainsPoint(largerFrame, point) == 1) ? self : nil;
}

CGRect largerFrame = CGRectMake(0 - 2, 0 - errorMargin, self.frame.size.width + 2, self.frame.size.height + errorMargin*2);
return (CGRectContainsPoint(largerFrame, point) == 1) ? self : nil;
}

您将获得相同的视觉输出和您想要的可触摸区域

关于ios - UIButton 像苹果键盘一样扩展触摸区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26831499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com