iOS开发之按钮拖动和点击(原作者的代码内容优化)

本文介绍了一个iOS应用中按钮拖动时出现的抖动Bug及其解决方案。通过记录触摸点并调整按钮位置,实现了平滑的拖动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文章原为网络代码段子,此处优化滑动瞬间抖动bug

因网络转载过多,找不到原作者,故没有原帖地址


按钮初始化

    BOOL isMoving;
    CGPoint delt;

  1. - (void)viewDidLoad 
  2.     [super viewDidLoad]; 
  3.         // Do any additional setup after loading the view, typically from a nib. 
  4.     self.btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
  5.     self.btn.frame = CGRectMake(10, 10, 50, 50); 
  6.      
  7.     [self.btn setTitle:@"触摸" forState:UIControlStateNormal]; 
  8.     [self.btn addTarget:self action:@selector(dragMoving:withEvent: )forControlEvents: UIControlEventTouchDragInside]; 
  9.     [self.btn addTarget:self action:@selector(doClick:) forControlEvents:UIControlEventTouchUpInside]; 
  10.     self.a=0; 
  11.     [self.view addSubview:self.btn]; 

点击方法

  1. -(void)doClick:(UIButton*)sender 
  2. {      if (!isMoving) {         NSLog(@"1111");     }     isMoving = NO;     delt.x = -1;     delt.y = -1;

拖动方法

  1. - (void) dragMoving: (UIButton *) c withEvent:ev 
  2. {      NSLog(@"2222222");     isMoving = YES;     UITouch *g = [[event allTouches] anyObject];     CGPoint point = [g locationInView:[self superview]];          if (delt.x == -1 && delt.y == -1) {         delt.x = point.x - self.frame.origin.x - self.frame.size.width/2;         delt.y = point.y - self.frame.origin.y - self.frame.size.height/2;     }          point.x -= delt.x;     point.y -= delt.y;          c.center = point;     NSLog(@"%f,,,%f",c.center.x,c.center.y);
  3. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值