我有一个包含UILabel和UIImageView的自定义UIView。如何使我的UIView可点击?我想在用户开始按下UIView的任何时候改变UIView的背景。当用户抬起按钮时,颜色应该会改变。我还需要能够处理点击事件。
答案 0 :(得分: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`)这是代码片段,您需要将视图作为参数传递,以使其可点击。
答案 1 :(得分:9)
另一种方法是通过情节提要/界面生成器连接手势识别器。
这比使用代码更简单,我觉得更干净。
以下是设置Gesture Recognizer的逐步参考。只需搜索Gesture Recognizer
:
在此处列出上述链接的步骤:
Object library
拖到场景中,并将其放在UIView的顶部。 scene dock
中看到Tap Gesture Recognizer。场景底座是故事板中View Controller的顶部,您可以在其中拥有First Responder,Exit等。答案 2 :(得分:4)
Swift 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..")
}
Swift 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")
}