2013-06-15 1 views
71

Я отображающее изображение из кода здесь кодНажмите Событие на UIImageView программно в ИОС

UIImageView *preArrowImage =[[UIImageView alloc]init ]; 
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"]; 
preArrowImage.frame = CGRectMake(20, 60, 10, 30); 
[self.view addSubview:preArrowImage]; 

Я хочу, чтобы обрабатывать сенсорное событие на preArrowImage программно.

+0

Это может быть полезно http://stackoverflow.com/questions/9008975/how-to-tap-to-zoom-and-double-tap-to-zoom-out-in-ios –

+0

@JaleelNazir - Ваш ответ не прост –

+0

Проверьте этот ответ, чтобы помочь вам [http://stackoverflow.com/a/41328885/3177007](http://stackoverflow.com/a/41328885/3177007) –

ответ

197

Objective-C

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)]; 
singleTap.numberOfTapsRequired = 1; 
[preArrowImage setUserInteractionEnabled:YES]; 
[preArrowImage addGestureRecognizer:singleTap]; 

-(void)tapDetected{ 
    NSLog(@"single Tap on imageview"); 
    } 

СВИФТ 4

let preArrowImage : UIImageView // also give it frame 
let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected")) 
preArrowImage.isUserInteractionEnabled = true 
preArrowImage.addGestureRecognizer(singleTap) 

//Action 
@objc func tapDetected() { 
    print("Imageview Clicked") 
} 
+0

для Swift 2 вы должны заменить ' Selector ("tapDetected") 'with:' "tapDetected:" ' – datayeah

+0

По умолчанию singleTap.numberOfTapsRequired = 1, Happy Coding Thanks –

17

Просто добавьте UITapGesture на изображение, но не забудьте сделать его UserInteraction Enabled.

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)]; 
    [preArrowImage addGestureRecognizer:singleTap]; 
    [preArrowImage setMultipleTouchEnabled:YES]; 
    [preArrowImage setUserInteractionEnabled:YES]; 
2

Используя историю доска с видом на вид контроллера.
view may be ImageView, UIView, UILabel, TextField or other controller


После выбора одного из жеста распознавателя перетащить его в контроллер.
Теперь он будет отображаться в «Контур документа» и заголовок контроллера вида xib.

Gesture icon in document out line and xib
Перетащите жест UILable
Drag gesture to UILable


Manually create (IBAction)method in header file


создать метод IBAction в файле заголовка
Теперь перетащите его из обработчика значок жест в XIb
Link it with gesture icon

4

Теперь в Swift!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected")) 
singleTap.numberOfTapsRequired = 1 

preArrowImage.userInteractionEnabled = true 
preArrowImage.addGestureRecognizer(singleTap) 


//Action 
func tapDetected() { 
    println("Single Tap on imageview") 
} 
1

Swift 3

На UIImageView позволяют UserInterAction

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { 
     super.touchesEnded(touches, with: event) 

     if let touch = touches.first { 
      if touch.view == self.imgVwPostPreview { //image View property 

       //Do your actions 
       //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!) 
      } 
     } 
    } 
+0

Это помогло Jaleel! – Marin

0

Если ваш UIImageView является IBOutlet который вы получаете от раскадровки или NIB, вы можете добавить UIGestureRecognizer к изображение, включить взаимодействие с пользователем и подключить IBAction к распознавателю жестов.

Для получения дополнительной информации проверить мой ответ на этот вопрос: How to you make a UIImageView on the storyboard clickable (swift)

0

Вот еще один вариант: жульничать.

Я имею в виду, думаю латерально.

Настройте свой UIImage, как вы хотите, обрезанный, аспект подходит, что угодно.

Накладка это с UIView (равные размеры, положение и т.д.)

Установить фон для clearcolour, а класс UIControl.

Наведите прикосновение внутрь события к вашему обработчику и вуаля.

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

  • Нет связанных вопросов^_^