gpt4 book ai didi

ios - 长按多次调用 UIButton 的操作

转载 作者:行者123 更新时间:2023-11-29 00:31:06 38 4
gpt4 key购买 nike

我有 2 个 UIButton,每个按钮都会更改中间的数字(请参见图片)。

我希望当用户按住按钮时数字仍然会发生变化(现在,当你想从 100 更改为 200 时,你需要点击 100 次,这不好,我希望当你按住按钮时数字将会改变),这可能意味着每个 UIButon 的操作应该被一次又一次地调用,直到用户释放按钮。

Photo

我该怎么做?谢谢!

最佳答案

这是我编写的符合您要求的代码。确保在 Storyboard中链接加号和减号按钮导出及其目标事件(内部修饰)。如果不清楚,请告诉我。

#import "ViewController.h"

@interface ViewController () {

NSTimer *speedTimer;
}

//Link this in your storyboard Outlets
@property (weak, nonatomic) IBOutlet UILabel *speedUILabel;
@property (weak, nonatomic) IBOutlet UIButton *plusUIButton;
@property (weak, nonatomic) IBOutlet UIButton *minusUIButton;

//Link this in your storyboard events respectively
- (IBAction)plusUIButton:(id)sender;
- (IBAction)minusUIButton:(id)sender;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

UILongPressGestureRecognizer *plusButtonPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressHandler:)];

UILongPressGestureRecognizer *minusButtonPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressHandler:)];

[_plusUIButton addGestureRecognizer:plusButtonPress];
[_minusUIButton addGestureRecognizer:minusButtonPress];

plusButtonPress.delegate = self;
minusButtonPress.delegate = self;

plusButtonPress.minimumPressDuration = 0.5;
minusButtonPress.minimumPressDuration = 0.5;

plusButtonPress.allowableMovement = 0.5;
minusButtonPress.allowableMovement = 0.5;
}


- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}


- (IBAction)plusUIButton:(id)sender {

NSInteger plus = [_speedUILabel.text integerValue] + 1;
if (plus >= 0) {
_speedUILabel.text = [NSString stringWithFormat:@"%ld", (long)plus];
}
}

- (IBAction)minusUIButton:(id)sender {

NSInteger minus = [_speedUILabel.text integerValue] - 1;

if (minus >= 0) {
_speedUILabel.text = [NSString stringWithFormat:@"%ld", (long)minus];
}

}

- (void) longPressHandler: (UILongPressGestureRecognizer *) gesture {

if (gesture.view == _plusUIButton) {

if(gesture.state == UIGestureRecognizerStateBegan) {
speedTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(plusUIButton:) userInfo:nil repeats:true];
}
else if(gesture.state == UIGestureRecognizerStateEnded) {
[speedTimer invalidate];
speedTimer = nil;
}
}
else if (gesture.view == _minusUIButton) {

if(gesture.state == UIGestureRecognizerStateBegan) {
speedTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(minusUIButton:) userInfo:nil repeats:true];
}
else if(gesture.state == UIGestureRecognizerStateEnded) {
[speedTimer invalidate];
speedTimer = nil;
}

}
}

@end

关于ios - 长按多次调用 UIButton 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41807787/

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