如何检测 UIView 上的触摸并检测单击哪个 UIView 类似于 UIButton 上的触摸?

Posted

技术标签:

【中文标题】如何检测 UIView 上的触摸并检测单击哪个 UIView 类似于 UIButton 上的触摸?【英文标题】:How to detect touch over a UIView & detect which UIView is clicked similar as touch over a UIButton? 【发布时间】:2015-05-07 10:33:24 【问题描述】:

我想检测UIView 上的触摸并检测哪个UIView 被点击,类似于触摸 UIButton?你们能解释一下为什么要给负分而不是只给负分。我不认为这个问题对我有用

ios Detect tap down and touch up of a UIView

How to detect touch over a UIView when touched over a UIButton?

我们对按钮 - (IBAction)Action_Wallet:(id)sender; 进行了操作 UIView 有类似的类型吗

【问题讨论】:

【参考方案1】:

这是一个简单的例子。

- (void)viewDidLoad 

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


    float y=50;

    for (int i=1; i<8; i++)
    
        UIView *vwDay=[[UIView alloc]init];
        [vwDay setFrame:CGRectMake(16, y, 252, 45)];
        [vwDay setBackgroundColor:[UIColor brownColor]];
        [vwDay setUserInteractionEnabled:YES];
        [vwDay setTag:2000+i];

        UITapGestureRecognizer *tappedOnDay=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tappedOnDay:)];
        [vwDay addGestureRecognizer:tappedOnDay];

        [self.view addSubview:vwDay];

        y=y+50;

    



-(void)tappedOnDay:(UITapGestureRecognizer*)recognizer


    UIView *vwDay=(UIView*)recognizer.view;

   NSLog(@"Tapped on view: %ld",vwDay.tag-2000);


在这里,我准备了 7 个视图,并为每个视图提供了 tapGesture 并仅打印用户点击的视图编号。

【讨论】:

我们对按钮 - (IBAction)Action_Wallet:(id)sender; 有操作,UIView 是否有类似的类型 不,对于视图,我们没有任何 IBAction。这是人们通常遵循的方式来查看任何操作。我们必须给视图提供手势来执行任何事件。

以上是关于如何检测 UIView 上的触摸并检测单击哪个 UIView 类似于 UIButton 上的触摸?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 UITableView 上的“快速触摸”以切换到/从全屏?

如何检测 UI 图像上的触摸?

IOS/Objective-C:检测 UIVIew 上的滑动和屏幕相同位置的按钮触摸

iPhone - 检测触摸并取消它们?

使用 CAAnimation 检测正在动画的 uiview 子视图的触摸

快速检测 Viewcontroller 上的第一次触摸