动画期间响应事件

示例一:

// 这样在btn运动的时候只有点击CGRectMake(0, 468, 100, 100);位置才会有响应
- (void)viewAnimationingRespondEvent {
    // 初始化按钮
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    button.backgroundColor = [UIColor redColor];
    [button addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

    // 执行动画
    [UIView animateKeyframesWithDuration:10.f delay:0 options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^{
        button.frame = CGRectMake(0, 468, 100, 100);
    } completion:^(BOOL finished) {

    }];
}

- (void)buttonEvent:(UIButton *)button {
    NSLog(@"获取点击事件");
}

效果:

示例二:

- (void)viewDidLoad {
    [super viewDidLoad];
    // 初始化按钮
    _btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    _btn.backgroundColor = [UIColor redColor];
    [_btn addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_btn];

    // 执行动画
    [UIView animateKeyframesWithDuration:10.f delay:0 options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction animations:^{
        _btn.frame = CGRectMake(0, 500, 100, 100);
    } completion:^(BOOL finished) {

    }];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    CGPoint touchPoint = [[touches anyObject] locationInView:self.view];
    // 获取button的layer当前位置的position
    CGPoint presentationPosition = [[_btn.layer presentationLayer] position];

    // 判断点击是在button上
    if (touchPoint.x > presentationPosition.x - 50 && touchPoint.x < presentationPosition.x + 50 && touchPoint.y > presentationPosition.y - 50 && touchPoint.y < presentationPosition.y + 50) {
        [self buttonEvent:_btn];
    }
}
- (void)buttonEvent:(UIButton *)button {
    NSLog(@"获取点击事件");
}

效果:

时间: 2024-10-06 10:01:53

动画期间响应事件的相关文章

输入坐标和输出坐标——图片框上动态加载按钮及响应事件

在实际的项目中总会遇到一些需要动态加载一些控件,并且加载控件的响应事件的代码.现在写一个简单的例子,主要说一下里面的一些关键点:使用鼠标在窗体上的图片框中动态的添加按钮 .动态的去加载事件,肯定是需要使用对象类动态的生成,动态事件,必须要使用委托去实现.还有一个就是"动态"的实现过程,打算鼠标点下去,在鼠标单击的位置添加上按钮. 环境:Visual Studio 2010, .Net FrameWork 3.5 private void pictureBox1_MouseDown(ob

ExtJS学习笔记2:响应事件、使用AJAX加载数据

响应事件: 1.设置一个html标记 <div id="my-div">Ext JS 4 Cookbook</div> 2.使用get函数获取此标记对象 var el = Ext.get('my-div'); 3.将响应函数和对象的事件绑定 el.on('click', function(e, target, options){ alert('The Element was clicked!'); alert(this.id); }, this); 4.一次也可

关于UITableView选中效果以及自定义cell上的控件响应事件

tableView默认的点击效果是:点击cell:A,出现点击效果,点另一个cell:B的时候,A的点击效果才会消失. 1.对于tableView,比较常用的效果,是点击表格行,出现效果,点击完毕,效果消失 那么就要在代码里做一些设置.代码如下: -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath

iOS:利用代码UIBarButtonItem如何响应事件?

在storyboard中,可以通过拖拽的方法响应事件. 如果是纯代码构建的UI,UIBarButtonItem 无法调用 addTarget: action: forControlEvents: 这个方法. 如下图所示,用代码创建的left按钮: 我想让导航栏中的『left』响应事件. 网上搜了一大堆方法,都好繁琐. 刚才奇思妙想试了一下,没想到居然可以╰( ̄▽ ̄)╮ 只写了两行代码: 1 left.target = self; 2 left.action = @selector(myMetho

mfc 鼠标、键盘响应事件

一.基本目标 1.有一个基本的MFC程序,点击“关闭”则“关闭”这个程序,这点没什么好讲的,把自带的“取消”按钮,右键->属性的Caption改成“关闭”二字就可以了 2.鼠标在对话框中移动,则显示其位置信息,这个坐标是窗口内部坐标 3.如果按着鼠标右键移动鼠标,则在这个工程的标题栏会显示“按着鼠标右键移动鼠标”,松开鼠标右键回复如初 4.如果按着键盘上的Ctrl键或者Shift键在对话框的窗口中移动鼠标,标题栏同样会有相应的提示,是否同时按下也会有提示 5.左击对话框,会弹出对话框,显示鼠标位

android通知栏Notification点击,取消,清除响应事件

主要是检测android通知栏的三种状态的响应事件 这次在实现推送需求的时候,要用到android通知栏Notification点击后进入消息页面,因为要实现一个保存推送用户名字的功能,我在点击后处理了这个功能,但是测试发现我点击删除或者滑动清除后这个功能并没有执行,所以才意识到要处理删除和滑动清除的事件: 首先实现一个BroadcastReceiver public class NotificationBroadcastReceiver extends BroadcastReceiver {

3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件

在3D Slicer中,我们如果想在自己写的插件中来修改默认的鼠标响应事件的话,就需要先将原有的响应事件链接删除,然后建立自定义的响应事件链接,然后将自己要实现的功能写在响应事件函数中. 比如Slicer中默认的鼠标左键拖拽,是任意旋转视图中的Camera,默认中的滑轮操作是拉远和拉近视图摄像机,默认的鼠标右键操作也是拉远和拉近视图摄像机的操作.这样滑轮就和鼠标右键的功能重复了,我们可以让鼠标右键实现其他的功能.比如在模型的Pitch, Yaw, Roll三个旋转方向上(其实旋转的只是试图中的摄

初学java之触发响应事件举例子

设置一个触发响应事件? 比如消息框..... 1 package hello; 2 import javax.swing.*; 3 import project.readerListen; 4 import java.awt.*; 5 import java.awt.event.*; 6 class WindGrid extends JFrame{ 7 8 JTextField text; 9 ActionListener listener; 10 11 public WindGrid(Stri

Matlab学习---------GUI键盘响应事件的学习

键盘响应事件的学习主要知识: 实例:创建一个GUI,添加两个输入框,一个按钮,实现输入数据之后点击按钮进行验证,验证成功之后关闭当前界面打开新的界面: (1)创建一个新的GUI界面:(添加组件并修改属性) (2)右键按钮添加点击事件响应函数: (3)右键界面,添加键盘按键响应函数: function varargout = gui_key(varargin) % GUI_KEY MATLAB code for gui_key.fig % GUI_KEY, by itself, creates a