日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

按钮在执行frame动画的时候怎么响应触发事件?

發布時間:2025/6/17 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 按钮在执行frame动画的时候怎么响应触发事件? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按鈕在執行frame動畫的時候怎么響應觸發事件?

代碼中效果(請注意,我并沒有點擊到按鈕,而是點擊到按鈕的終點frame值處):

對應的代碼:

// // ViewController.m // TapButton // // Created by YouXianMing on 14/12/7. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 初始化按鈕UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];button.backgroundColor = [UIColor redColor];[button addTarget:selfaction:@selector(buttonEvent:)forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:button];// 執行動畫[UIView animateWithDuration:10.fdelay:0options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteractionanimations:^{button.frame = CGRectMake(0, 468, 100, 100);} completion:^(BOOL finished) {}]; }/*** 按鈕事件** @param button 按鈕事件*/ - (void)buttonEvent:(UIButton *)button {NSLog(@"YouXianMing"); }@end

修改過后的效果:

源碼:

// // ViewController.m // TapButton // // Created by YouXianMing on 14/12/7. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h" #import "ChildView.h"@interface ViewController (){ChildView *tmpView;}@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 初始化按鈕tmpView = [[ChildView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];tmpView.backgroundColor = [UIColor redColor];tmpView.userInteractionEnabled = NO; // 讓self.view獲取點擊事件(穿透自身) [self.view addSubview:tmpView];// 執行動畫[UIView animateWithDuration:10.fdelay:0options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteractionanimations:^{tmpView.frame = CGRectMake(0, 468, 100, 100);} completion:^(BOOL finished) {}]; }- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {// 獲取點擊點CGPoint point = [[touches anyObject] locationInView:self.view];// 獲取tmpView的layer當前的位置CGPoint presentationPosition = [[tmpView.layer presentationLayer] position];// 判斷位置,讓tmpView接受點擊事件if (point.x > presentationPosition.x - 50 && point.x < presentationPosition.x + 50 &&point.y > presentationPosition.y - 50 && point.y < presentationPosition.y + 50) {[tmpView touchesBegan:touches withEvent:event];} }@end

ChildView.h 與?ChildView.m

// // ChildView.h // TapButton // // Created by YouXianMing on 14/12/7. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import <UIKit/UIKit.h>@interface ChildView : UIView@end // // ChildView.m // TapButton // // Created by YouXianMing on 14/12/7. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ChildView.h"@implementation ChildView- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {NSLog(@"獲取點擊事件"); }@end

關鍵性的兩步:

?

轉載于:https://www.cnblogs.com/YouXianMing/p/4149103.html

總結

以上是生活随笔為你收集整理的按钮在执行frame动画的时候怎么响应触发事件?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。