我在故事板中有一組12個UIImageViews,爲了參數的緣故,我想讓每一個打印到日誌「你剛剛點擊圖像x」,當用戶點擊它時,其中x是從1-12開始拍攝的圖像數量)。所以我需要檢測哪些圖像被點擊,並根據這些信息做一些事情。在Swift 3中,最好的方法是做什麼? (我假設有12個IBActions - 將它們當作帶背景圖像的按鈕處理 - 是非常糟糕的代碼,並且它們需要放置在背景圖像頂部的特定位置,所以不能使用UICollectionView來完成此操作。)謝謝當用戶點擊View Controller中的多個UIImage中的一個時,如何打印「圖像x輕敲」? (Swift 3)
回答
首先,我想使用的CollectionView是一個更好的方法來達到你想要什麼。但是,你需要:
- 設置
userInteractionEnabled
到true
您的所有imageViews的。 - 設置所有imageViews的順序 -
tag
,例如image1.tag = 1,image2.tag = 2 ...等等。 實現方法是所有的圖片竊聽的目標,應該是與此類似:
func imageViewTapped(imageView: UIImageView) { print("You just tapped image (imageView.tag)") }
- 創建酮單點觸手勢和分配實現的方法,以它的選擇:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(imageViewTapped))
- 最後,添加
tapGesture
所有的您的圖像,例如:image1.addGestureRecognizer(tapGesture),image2.addGestureRecognizer(tapGesture)...等等。
希望這會有所幫助。
這本身並沒有錯誤的代碼,但是如果你這樣做,或者在每個ImageView上輕敲手勢,你可能會想要將這部分邏輯分開。
有,你可以用它來更好地管理這種事情,尤其是如果這是應該擴大其他方法/視圖,但你的約束,這是我的建議:
要麼TapGestureRecognizers添加到您的imageViews或使它們的按鈕,那麼他們的一切行動連接到這一點:
所有的@IBAction func phoneWasPressed(sender: AnyObject) {
guard let tappedImageView = sender as? UIImageView else {
return
}
switch tappedImageView {
case imageView1:
//do something
case imageView2:
// do something else
//etc.
default:
break
}
switch sender
}
謝謝您的回答 - 我如何將多個TapGestureRecognizers的操作連接到您所指的IBaction?我是一個新手,所以只有通過IBAction ctrl-drag,我才知道將方法連接到一個方法。 – Apneist
您可以使用GestureRecognizers以及選擇器來做到這一點,但請看看這裏:http://rshankar.com/uigesturerecognizer-in-swift/ https://developer.apple.com/reference/uikit/uitapgesturerecognizer – PeejWeej
謝謝你先生 - 我會檢查出來 – Apneist
我不認爲這是一個壞主意有12個按鈕。爲其中的每個人分配一個來自1-12的標記並將它們連接到相同的IBAction。
@IBAction func didTapImageButton(button: UIButton) {
print("You just tapped image \(button.tag)")
}
- 1. 一旦點擊按鈕,我如何從View Controller導航到另一個View Controller?
- 2. 如何在一個函數中打開另一個View Controller with Swift?
- 3. Swift 3檢查用戶點擊圖像
- 4. 如何調用(顯示)在Swift中單擊Table View單元格時的另一個View Controller
- 5. 如何在swift中點擊按鈕上的uiimage圖像?
- 6. 如何將多個重疊的UIImage合併到Swift中的一個UIImage中?
- 7. 輕敲後點擊
- 8. 單擊一個按鈕打印多個圖像在winforms中全部打印
- 9. 如何使用Swift 3在BWWalkthrough View Controller中添加標籤?
- 10. 當Ctrl鍵拖動View Controller上的一個按鈕時,Swift「show segue」不可用
- 11. 如何點擊一個按鈕在TableViewCell中顯示Swift圖像?
- 12. 如何在一個View Controller中使用2個UIPickerView?
- 13. 當用戶點擊瀏覽器的打印按鈕時如何打印另一個頁面(或文件)?
- 14. 多點觸摸兩個手指輕敲
- 15. 如何在Visio的多個頁面上輕鬆打印多個圖層
- 16. 在C#中打印多個圖像
- 17. 如何從View Controller中選擇故事板中的UIImage
- 18. 當用戶在swift中點擊我的容器時,如何打開另一個UIViewController?
- 19. 在vb.net中打印多個圖像
- 20. 當用戶點擊UITableview行時,HoW在另一個視圖中打開url?
- 21. 當用戶點擊一個按鈕時,他們在靠近某個位置時獲得x點(SWIFT)
- 22. 我想在另一個活動中打開一個圖像,當點擊列表視圖中的項目時
- 23. Present Popover View Controller Swift
- 24. 當另一個圖像被點擊時顯示圖像
- 25. Swift 3:如何讓用戶從照片庫中選擇多個圖像?
- 26. Tkinter中的一個不同的「拖放」圖像(Python 3.x)
- 27. UITapGestureRecognizer xamarin - 輕敲多次快速顯示多個視圖
- 28. 我如何繪製一個圖像到另一個UIImage來創建一個UIImage
- 29. 當用戶點擊Swift中的UITextView時,如何運行一段代碼?
- 30. 當另一個圖像被點擊時檢索圖像源?
謝謝你的回答 - 我試了一下,但沒有反應,當我點擊圖像。我已經設置了標籤,userInteraction = yes,並將UIImages的插口引用到Storyboard中的TapGestureRecognizer。當我以編程方式添加image1.addGestureRecognizer(tapGesture),image2.addGestureRecognizer(tapGesture)等,那麼它只能在最後一個工作,忽略之前的。任何想法可能是錯的?我在編碼方面處於初級水平,因此可能很簡單。我會繼續努力 - 再次感謝 – Apneist
更新,終於使它工作 - 它的唯一工作方式是,根據上面的解決方案,但是,我必須爲每個圖像做出不同的tapGestureRecognizer實例。如果我按照您的解決方案進行了相同的操作,它只會記錄最後一個,並且只有在最後一個uiImageView上使用tap識別功能才能添加tapGesture。所以我做了這樣的事情: – Apneist
讓tapGestureFirst = UITapGestureRecognizer(目標:自我,動作:#selector(TAP)) 讓tapGestureTwo = UITapGestureRecognizer(目標:自我,動作:#selector(TAP)) – Apneist