2013-03-19 121 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