我試圖在用戶點擊它時將一個UIImageView
分配給一個動作。如何在Swift中爲UIImageView對象分配一個動作
我知道如何爲UIButton
創建動作,但我怎麼能模仿UIButton
的相同行爲,但是使用UIImageView
?
我試圖在用戶點擊它時將一個UIImageView
分配給一個動作。如何在Swift中爲UIImageView對象分配一個動作
我知道如何爲UIButton
創建動作,但我怎麼能模仿UIButton
的相同行爲,但是使用UIImageView
?
你需要一個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爲)
您需要添加一個手勢識別器(用於水龍頭使用UITapGestureRecognizer,點擊並按住使用UILongPressGestureRecognizer)到您的UIImageView
。
let tap = UITapGestureRecognizer(target: self, action: #selector(YourClass.tappedMe))
imageView.addGestureRecognizer(tap)
imageView.isUserInteractionEnabled = true
與實現,如選擇方法:
func tappedMe()
{
println("Tapped on Image")
}
其實你可以只設置的圖像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)
要告訴你的用戶,你正在加載的圖像
您可以將UITapGestureRecognizer
添加到ImageView的,只需將一個到你的故事板/ XIB,按住Ctrl從的ImageView到gestureRecognizer,並按住Ctrl鍵從gestureRecognizer到Swift文件,製作IBAction
。
您還需要啓用對UIImageView
用戶交互,如本圖所示:
默認情況下,UIImageView不響應觸摸。您還必須啓用用戶交互。 – rmaddy
@rmaddy糟糕,那是真的。編輯。 – Emil
用戶交互啓用爲我做了詭計,謝謝! – saman0suke
你可以把UIButton
與在UIImageView
頂部的透明背景,並聽取了關於自來水加載圖像
它是一種描述選項的快捷方式。我想每個人都知道這一點! –
在沒有任何真正原因的情況下添加不必要的UI組件並不是一個好主意。它會增加UI的複雜性,並且還必須處理相同的自動佈局約束。最好添加一個TapGestureRecognizer。 – Gunhan
對於迅速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")
}
這適用於swift 3.0。謝謝!! –
userInteractionEnabled現在已被重命名爲isUserInteractionEnabled –
感謝使用按鈕作爲圖像,並完美地工作:) – user3706773
Nitpick:var tgr = UITapGestureRecognizer(target:self action:Selector(「imageTapped:」)),需要兩個參數之間的逗號。 – sysuser
如下面MidHun MP所述,確保你有userInteractionEnabled = true – Sheraz