I wrote a simple demo to show my issue.The button need to be added two touch events:drag and touch.
UIButton * btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
btn1.frame = CGRectMake(300, 100, 100, 100);
btn1.backgroundColor = [UIColor redColor];
[btn1 addTarget:self action:@selector(stretchBtnDragMoving:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[btn1 addTarget:self action:@selector(stretchBtnDragEnded:withEvent:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside];
[self.view addSubview:btn1];
And then,
- (void)stretchBtnDragMoving:(UIControl *)control withEvent:(UIEvent *)event
{
NSLog(@"moving");
}
- (void)stretchBtnDragEnded:(UIControl *)control withEvent:(UIEvent *)event
{
NSLog(@"end or in");
}
When I touched the button in iPhone6s/6s plus like normal time,both of the methods be called.
But when I touched the button very light, only the second method be called.
When I used iPhone6/6 plus,iPad and other devices,however I touched the button,only the second method be called.