2015-01-10 69 views

回答

250

你需要一個UITapGestureRecognizer。 要設置使用此:

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))) 
    imageView.isUserInteractionEnabled = true 
    imageView.addGestureRecognizer(tapGestureRecognizer) 
} 

func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) 
{ 
    let tappedImage = tapGestureRecognizer.view as! UIImageView 

    // Your action 
} 

(您也使用一個UIButton和圖像分配給它,沒有文字,比簡單地連接一個IBAction爲)

+0

感謝使用按鈕作爲圖像,並完美地工作:) – user3706773

+3

Nitpick:var tgr = UITapGestureRecognizer(target:self action:Selector(「imageTapped:」)),需要兩個參數之間的逗號。 – sysuser

+2

如下面MidHun MP所述,確保你有userInteractionEnabled = true – Sheraz

48

您需要添加一個手勢識別器(用於水龍頭使用UITapGestureRecognizer,點擊並按住使用UILongPressGestureRecognizer)到您的UIImageView

let tap = UITapGestureRecognizer(target: self, action: #selector(YourClass.tappedMe)) 
imageView.addGestureRecognizer(tap) 
imageView.isUserInteractionEnabled = true 

與實現,如選擇方法:

func tappedMe() 
{ 
    println("Tapped on Image") 
} 
+10

userInteractionEnabled是關鍵。 – kennydust

+0

這不適合我「幫助」 – hatim

+0

@hatim:你面臨的問題是什麼?如果您有新問題,請將其作爲新問題發佈。 –

7

其實你可以只設置的圖像UIButton到你通常會在UIImageView中放置的東西。例如,如果你會做:

myImageView.image = myUIImage 

你也可以使用:

myButton.setImage(myUIImage, forState: UIControlState.Normal) 

所以,這裏是你的代碼可能是什麼樣子:

override func viewDidLoad(){ 
    super.viewDidLoad() 

    var myUIImage: UIImage //set the UIImage here 
    myButton.setImage(myUIImage, forState: UIControlState.Normal) 
} 

@IBOutlet var myButton: UIButton! 
@IBAction func buttonTap(sender: UIButton!){ 
    //handle the image tap 
} 

偉大的事情有關使用該方法是,如果您必須從數據庫加載圖像,則可以在設置圖像之前設置按鈕的標題:

myButton.setTitle("Loading Image...", forState: UIControlState.Normal) 

要告訴你的用戶,你正在加載的圖像

21

您可以將UITapGestureRecognizer添加到ImageView的,只需將一個到你的故事板/ XIB,按住Ctrl從的ImageView到gestureRecognizer,並按住Ctrl鍵從gestureRecognizer到Swift文件,製作IBAction

您還需要啓用對UIImageView用戶交互,如本圖所示: enter image description here

+3

默認情況下,UIImageView不響應觸摸。您還必須啓用用戶交互。 – rmaddy

+0

@rmaddy糟糕,那是真的。編輯。 – Emil

+1

用戶交互啓用爲我做了詭計,謝謝! – saman0suke

1

你可以把UIButton與在UIImageView頂部的透明背景,並聽取了關於自來水加載圖像

+1

它是一種描述選項的快捷方式。我想每個人都知道這一點! –

+0

在沒有任何真正原因的情況下添加不必要的UI組件並不是一個好主意。它會增加UI的複雜性,並且還必須處理相同的自動佈局約束。最好添加一個TapGestureRecognizer。 – Gunhan

12

對於迅速2.0及以上前的按鈕爲此

@IBOutlet weak var imageView: UIImageView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tappedMe)) 
     imageView.addGestureRecognizer(tap) 
     imageView.userInteractionEnabled = true 
    } 
    func tappedMe() 
    { 
     print("Tapped on Image") 
    } 
+0

這適用於swift 3.0。謝謝!! –

+0

userInteractionEnabled現在已被重命名爲isUserInteractionEnabled –

相關問題