Nhấp vào Sự kiện trên UIImageView có lập trình trong iOS


95

Tôi đang hiển thị một hình ảnh từ mã đây là mã

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ý sự kiện chạm trên preArrowImage theo lập trình.


Điều này có thể sử dụng stackoverflow.com/questions/9008975/…
Gaz_Edge

Kiểm tra câu trả lời này sẽ giúp bạn http://stackoverflow.com/a/41328885/3177007
Mohamed Jaleel Nazir

Câu trả lời:


250

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,2 / 5

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

đối với Swift 2, bạn nên thay thế Selector("tapDetected")bằng:"tapDetected:"
datayeah

Theo mặc định singleTap.numberOfTapsRequired = 1, Cảm ơn mã hóa vui vẻ
Ravi

'let singleTap = UITapGestureRecognizer (target: self, action: #selector (NavigationViewController.tapDetectedImage))'
Alex22, 26/02/19

18

Chỉ cần thêm một UITapGesturevào hình ảnh nhưng hãy nhớ kích hoạt UserInteraction của nó .

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

6

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

4

Swift 3

Trên UIImageView, bật 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!)
            }
        }
    }

3

Sử dụng bảng câu chuyện với chế độ xem trong bộ điều khiển chế độ xem.
chế độ xem có thể là ImageView, UIView, UILabel, TextField hoặc bộ điều khiển khác


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

Biểu tượng cử chỉ trong dòng tài liệu và xib
Kéo cử chỉ vào UILable
Kéo cử chỉ vào UILable


Tạo thủ công phương thức (IBAction) trong tệp tiêu đề


tạo phương thức IBAction trong tệp tiêu đề
Bây giờ hãy kéo nó từ trình xử lý sang biểu tượng cử chỉ trong xib
Liên kết nó với biểu tượng cử chỉ


0

Nếu UIImageView của bạn là IBOutlet mà bạn nhận được từ Storyboard hoặc Nib, bạn có thể thêm UIGestureRecognizer vào 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 tin, hãy kiểm tra câu trả lời của tôi cho câu hỏi này: Làm thế nào để bạn tạo một UIImageView trên bảng phân cảnh có thể nhấp được (nhanh chóng)


0

Đây là một lựa chọn khác: Cheat.

Ý tôi là, hãy suy nghĩ theo chiều ngang.

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

Lớp phủ điều này bằng một UIView (kích thước bằng nhau, vị trí, v.v.)

Đặt nền thành màu rõ ràng và lớp thành UIControl.

Hướng sự kiện bên trong liên lạc lên trình xử lý của bạn và thì đấy.


Thậm chí còn dễ dàng hơn UIView: Sử dụng một nút và xóa văn bản. ;)
Neph

0

Xamarin.iOS

UIImageView preArrowImage; // also give it frame
var singleTap = new UITapGestureRecognizer(TapDetected);
singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
preArrowImage.UserInteractionEnabled = true;
preArrowImage.AddGestureRecognizer(singleTap)

bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
{
    return true;
}

void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
{
    print("Imageview Clicked")
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.