2013-03-19 64 views
8

我有一个自定义的UIView包含UILabel和UIImageView。如何让我的UIView可点击?我希望UIView的背景在用户开始按下UIView时随时改变。当用户抬起按钮时,颜色应该变回。我还需要能够处理点击事件。如何使UIView可点击

+0

对不起Noob问题,我是iOS开发新手。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2013-03-19 03:29:58

+0

我通常通过点击手势来模仿点击能够UIView – 2013-03-19 03:31:40

+0

可能重复的[如何添加触摸事件到UIView?](http://stackoverflow.com/questions/4660371/how-to-add-a点触摸事件到一个-的UIView) – 2015-07-14 15:46:19

回答

20
-(void)addGestureRecogniser:(UIView *)touchView{ 

    UITapGestureRecognizer *singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(changecolor)]; 
    [touchView addGestureRecognizer:singleTap]; 
    DBLog(@"ADD GESTURE RECOGNIZER"); 
} 
-(void)changecolor{ 

    // do something 


} 

1`)这是代码片段,其中你需要将视图作为参数传递以便使其可点击。

4

雨燕2.0版本:

不要忘记实现UIGestureRecognizerDelegate

// Add tap gesture recognizer to View 
let tapGesture = UITapGestureRecognizer(target: self, action: Selector("onClickOnView")) 
tapGesture.delegate = self 
self.view.addGestureRecognizer(tapGesture) 

func onClickOnView(){ 
    print("You clicked on view..") 
} 

雨燕3.0版本:

// Add tap gesture recognizer to View 
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView(_:))) 
tapGesture.delegate = self 
view.addGestureRecognizer(tapGesture) 

func clickView(_ sender: UIView) { 
    print("You clicked on view") 
} 
7

另一种方式是挂钩日通过故事板/界面生成器的手势识别器。

这很容易,而且我觉得比使用代码更简洁。

以下是设置手势识别器的分步参考。只要搜索Gesture Recognizer

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html#//apple_ref/doc/uid/TP40015214-CH6-SW1

清单出从上面的链接这里的步骤:

  1. 将来自Object library到场景中的点按手势识别器对象,并将其放置在顶部UIView的。
  2. 您将会在膳食scene dock中看到一个Tap Gesture Recognizer。场景底座是故事板中视图控制器的顶部,您有第一个响应者,退出等。
  3. 通过将场景底座中的手势识别器拖动到代码显示,将Tap手势识别器连接到您的代码。像操作UIButton操作一样填充“操作”对话框。
  4. 你完成了! :D