UIImageView 預設 userInteractionEnabled = NO,無法接收觸摸事件。需啟用互動並添加手勢辨識器。
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowprev.png"]];
imageView.frame = CGRectMake(20, 60, 10, 30);
imageView.userInteractionEnabled = YES; // 關鍵:啟用使用者互動
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[imageView addGestureRecognizer:tap];
[self.view addSubview:imageView];
// 處理方法
- (void)handleTap:(UITapGestureRecognizer *)recognizer {
NSLog(@"圖片被點擊");
// 執行業務邏輯
}
let imageView = UIImageView(image: UIImage(named: "arrowprev.png"))
imageView.frame = CGRect(x: 20, y: 60, width: 10, height: 30)
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
imageView.addGestureRecognizer(tap)
view.addSubview(imageView)
@objc func handleTap(_ recognizer: UITapGestureRecognizer) {
print("圖片被點擊")
}
tap.numberOfTapsRequired = 2 設定雙擊;單擊需 require(toFail: doubleTap) 避免衝突。UILongPressGestureRecognizer 適用「按住預覽/刪選」場景。UIButton 設定圖片更簡潔。userInteractionEnabled = YES:UIImageView 預設關閉,手勢永不觸發。userInteractionEnabled = NO 會阻斷子視圖事件。@selector(handleTap:) 冒號對應帶 UIGestureRecognizer* 參數,無冒號則無參數。掌握「啟用互動 + 加手勢」雙步驟,UIImageView 即可靈活處理各類觸摸互動。