2013-06-15 26 views
71

Tôi đang hiển thị hình ảnh từ mã ở đây là mãBấm tổ chức sự kiện trên UIImageView lập trình trong ios

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

Tôi muốn để xử lý các sự kiện liên lạc trên preArrowImage lập trình.

+0

Đây có thể là một số cách sử dụng http://stackoverflow.com/questions/9008975/how-to-tap-to-zoom-and-double-tap-to-zoom-out-in-ios –

+0

@JaleelNazir - Câu trả lời của bạn không đơn giản –

+0

Kiểm tra câu trả lời này sẽ giúp bạn [http://stackoverflow.com/a/41328885/3177007](http://stackoverflow.com/a/41328885/3177007) –

Trả lời

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"); 
    } 

SWIFT 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

cho Swift 2, bạn nên thay thế ' Bộ chọn ("tapDetected") 'với:' "tapDetected:" ' – datayeah

+0

Theo mặc định singleTap.numberOfTapsRequired = 1, Happy Coding Cảm ơn –

17

Chỉ cần thêm UITapGesture vào hình ảnh nhưng hãy nhớ bật UserInteraction Enabled.

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

Sử dụng bảng câu chuyện với cái nhìn theo quan điểm điều khiển.
view may be ImageView, UIView, UILabel, TextField or other controller


Sau khi chọn một trong những cử chỉ kéo recognizer nó để điều khiển của bạn.
Bây giờ, nó sẽ hiển thị trong "Đường viền tài liệu" và tiêu đề của bộ điều khiển xem xib.

Gesture icon in document out line and xib
Kéo cử chỉ để UILable
Drag gesture to UILable


Manually create (IBAction)method in header file


tạo phương pháp IBAction trong tập tin tiêu đề
Bây giờ kéo nó từ xử lý để biểu tượng cử chỉ trong xib
Link it with gesture icon

4

Bây giờ trong 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

On UIImageView phép 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

Điều này đã giúp Jaleel! – Marin

0

Nếu UIImageView của bạn là một IBOutlet mà bạn nhận được từ một Storyboard hoặc NIB, bạn có thể thêm một UIGestureRecognizer đến chế độ xem hình ảnh, cho phép tương tác người dùng và kết nối IBAction với trình nhận dạng cử chỉ.

Để biết thêm thông kiểm tra câu trả lời của tôi về câu hỏi này: How to you make a UIImageView on the storyboard clickable (swift)

0

Dưới đây là một lựa chọn khác: Cheat.

Ý tôi là, suy nghĩ về sau.

Thiết lập UIImage của bạn theo cách bạn muốn, bị cắt, phù hợp với khía cạnh, bất cứ điều gì.

Overlay này với một UIView (kích thước bằng nhau, vị trí, vv)

Đặt nền để clearcolour, và lớp để UIControl.

Chỉ việc chạm vào bên trong sự kiện vào trình xử lý của bạn và nhấn voila.

Các vấn đề liên quan