2016-08-18 6 views
-1

У меня есть приложение для рисования. Внутри моего VC есть пять изображений с пятью цветами в них. Я хочу иметь возможность щелкнуть по изображению и изменить цвет штриха. Это можно легко сделать, если я повторяю себя в контроллере view, добавляя указатели распознавания жестов в каждый UIImageView и имея свою индивидуальную функцию «селектора». Такие, какПользовательский UIView с tapGesture

func redTapped() {} 
func blueTapped() {} 

Однако, я хочу, чтобы иметь возможность сделать код более понятным путем создания пользовательского класса (ColorImageView.Swift) для этих ImageViews так, что, когда я задаю класс по этим кнопкам, они автоматически получают жест нажатия, и мой VC автоматически получает информацию о том, какой из них прослушивается. На данный момент я могу распечатать «imagePressed» для каждого изображения, которое присваивается моему классу. Однако я не могу различить, какой из них был нажат. Ниже мой код ColorImageView.Swift

import Foundation 

class ColorImageView: UIImageView { 

    private func initialize() { 
     let touchGesture = UITapGestureRecognizer(target: self, action: #selector(ColorImageView.imagePressed(_:))) 
     touchGesture.numberOfTapsRequired = 1 
     self.userInteractionEnabled = true 
     self.addGestureRecognizer(touchGesture) 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     initialize() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     initialize() 
    } 

    func imagePressed(gestureRecognizer: UITapGestureRecognizer) { 
     print("image pressed \(gestureRecognizer)") 
    } 
} 

Мои имена ImageView являются red.png, green.png, blue.png ... и т.д.

Благодаря

editVC

+0

Пожалуйста, покажите ваш ViewController кодирования Я имею в виду, который вы добавили ColorImageView к ViewController – user3182143

+0

Я не имею никакого кода для моего VC еще. Я хочу, чтобы сначала можно было отличить, какой образView был использован из пользовательского класса. Затем, когда это будет завершено, я могу использовать протокол для передачи информации в свой VC. На данный момент я могу распечатать, как показано ниже, когда я нажал изображение ... ..... Изображение нажато ; target = <(action = imagePressed :, target = ) >> – user172902

+0

Где вы установили изображения? – user3182143

ответ

1

Вы можете получить тег легко. Он работает нормально.

func imagePressed(gestureRecognizer: UITapGestureRecognizer) 
{ 
    print("image pressed \(gestureRecognizer)") 
    let tappedImageVIew = gestureRecognizer.view as! UIImageView 
    print("image pressed \(tappedImageVIew.tag)") 
} 
+0

Работает как очарование! Очень ценится – user172902

+0

Большое спасибо брату – user3182143

+0

Добро пожаловать :-) – user3182143

Смежные вопросы