12

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

4

3 回答 3

21
-(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`)这是代码片段,您需要将视图作为参数传递以使其可点击。

于 2013-03-19T03:35:34.890 回答
13

另一种方法是通过故事板/界面生成器连接手势识别器。

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

这是设置手势识别器的分步参考。只需搜索Gesture Recognizer

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

在此处列出上述链接中的步骤:

  1. 将 Tap Gesture Recognizer 对象从 拖到Object library您的场景中,并将其放在 UIView 的顶部。
  2. 您将在scene dock. 场景停靠栏是情节提要中视图控制器的顶部,您可以在其中拥有 First Responder、Exit 等。
  3. 将 Tap Gesture Recognizer 连接到您的代码,方法是按住 Control 从场景停靠栏中的手势识别器拖动到代码显示。像对 UIButton 操作一样填写操作对话框。
  4. 你完成了!:D
于 2016-08-01T04:40:17.387 回答
7

斯威夫特 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")
}
于 2016-01-11T11:07:00.480 回答