我的项目有UIButtons
,执行代码块需要1秒钟。
我在其他项目中的按钮工作正常,但由于一些奇怪的原因,这个项目有一个恼人的延迟。
按钮是dailer编号,因此需要快速按下: 下面是一个例子:
- (IBAction)phonePressed:(id)sender {
UITapGestureRecognizer *backspaceGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(backspace)];
UIButton *one = [[UIButton alloc] initWithFrame:CGRectMake(menuShadowLayer2.frame.origin.x+10, menuShadowLayer2.frame.origin.y+10, 80, 80)];
one.layer.cornerRadius = 40;
one.layer.borderColor = [UIColor lightGrayColor].CGColor;
one.layer.borderWidth = 1;
[one setBackgroundColor:[UIColor colorWithRed:0/255.0f green:0/255.0f blue:0/255.0f alpha:0.3]];
[one setTitle:@"1" forState:UIControlStateNormal];
[one.titleLabel setTextAlignment:NSTextAlignmentCenter];
[one setTitleColor:[UIColor whiteColor]forState:UIControlStateNormal];
[one.titleLabel setFont:[UIFont fontWithName:@"STHeitiSC-Light" size:50]];
[container addSubview:one];
[one addGestureRecognizer:tap1];
...
- (void)dailed1 {
numberDailed.text = [numberDailed.text stringByAppendingString:@"1"];
NSLog(@"1");
}
这是使用UIControlEventTouchUpInside的另一个按钮,如果不慢,也会很慢。
UIButton *cancel = [[UIButton alloc] initWithFrame:CGRectMake(numberDailed.frame.origin.x, numberDailed.frame.origin.y+200, numberDailed.frame.size.width+40, 110)];
cancel.layer.cornerRadius = 15;
[cancel setImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal];
cancel.clipsToBounds = YES;
[container addSubview:cancel];
[cancel addTarget:self
action:@selector(clearNumber:)
forControlEvents:UIControlEventTouchDown];
...
-(IBAction)clearNumber:(id)sender{
[numberDailed setText:@""];
}
我使用UITapGestureRecognizer
使用按钮UIControlEventTouchUpInside
或TouchDown
更慢。
当按下此按钮(one
)时,我必须等待大约半秒到一秒,然后再次点击。当你输入数字和一半的数字时,这显然会让人感到沮丧。
我已将UIScrollView
设为delaysContentTouches = NO;
按钮立即突出显示。它根本不会立即执行代码。
我使用按钮one
作为示例,但这适用于我项目中的所有UIButtons
。
思考?
答案 0 :(得分:0)
您使用手势的地方
[one addGestureRecognizer:tap1];
相反,您应该使用按钮操作
[one addTarget:self action: @selector(dailed1:)];
答案 1 :(得分:0)
夫妻俩。首先,像这样创建你的按钮:
UIButton *numberButton = [UIButton buttonWithType:UIButtonTypeCustom];
numberButton.frame = CGRectMake(...);
其次,正如其他人所指出的那样,你不需要任何手势,但应该在按钮上附加一个动作/目标:
[numberButton addTarget:self action:@selector(numberDialled:) forControlEvents: UIControlEventTouchUpInside];
第三,创建您的IBAction:
- (IBAction) numberDialled:(id)sender
答案 2 :(得分:0)
在我的项目中问题与MapBox API
(不推荐)有关,删除了所有内容。所有代码都很好,已经回到表演选择器并删除了手势。