开发者社区> 问答> 正文

objective-C中触发事件

需要实现如下功能:将可拖拽的按钮拖拽到屏幕的指定位置时,自动触发一个事件。不知道应该从哪儿入手,

UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn1 setFrame:CGRectMake(10.0f, 300.0f, 300.0f, 42.0f)];
[btn1 setTitle:[NSString stringWithFormat:@"View Fullscreen Decor"] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[self.view addSubview:btn1];
[super viewDidLoad];
[myScrollView addSubview:btn1];

- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
UIControl *control = sender;
control.center = point;
}

展开
收起
爵霸 2016-03-24 09:54:44 2107 0
1 条回答
写回答
取消 提交回答
  • //添加拖拽停止监听
    [btn1 addTarget:self action:@selector(imageMovedEnd:withEvent:) forControlEvents:UIControlEventTouchUpInside];
    
    //拖拽停止处理
    - (IBAction) imageMovedEnd:(id) sender withEvent:(UIEvent *) event
    {
    
      CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
      UIControl *control = sender;
      control.center = point;
      NSLog(@"End... %f,%f",point.x,point.y);
      // do  sth..  判断Point是否在屏幕的指定位置即可,简单的碰撞检测,可以自己去Google搜一下
    }
    2019-07-17 19:12:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载