Tôi đang sử dụng một vài công cụ nhận dạng cử chỉ trên một số chế độ xem, nhưng đôi khi lượt xem quá nhỏ và rất khó để đạt được. Sử dụng các trình nhận dạng là cần thiết, vậy làm thế nào tôi có thể phóng to khu vực hit?Làm thế nào để phóng to khu vực hit của UIGestureRecognizer?
8
A
Trả lời
19
Nếu bạn đang làm điều này cho một phong tục UIView
, bạn sẽ có thể ghi đè lên các phương pháp hitTest:withEvent:
:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
CGRect frame = CGRectInset(self.bounds, -20, -20);
return CGRectContainsPoint(frame, point) ? self : nil;
}
Đoạn mã trên sẽ thêm một biên giới 20 điểm xung quanh xem. Nhấn vào vị trí bất kỳ trong khu vực đó (hoặc trên chính chế độ xem) sẽ cho biết một lần truy cập.
0
Nếu bạn đang sử dụng một UIImageView
như một nút, bạn có thể sử dụng tiện ích sau (Swift 3.0):
extension UIImageView {
open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.isHidden || !self.isUserInteractionEnabled || self.alpha < 0.01 { return nil }
let minimumHitArea = CGSize(width: 50, height: 50)
let buttonSize = self.bounds.size
let widthToAdd = max(minimumHitArea.width - buttonSize.width, 0)
let heightToAdd = max(minimumHitArea.height - buttonSize.height, 0)
let largerFrame = self.bounds.insetBy(dx: -widthToAdd/2, dy: -heightToAdd/2)
// perform hit test on larger frame
return (largerFrame.contains(point)) ? self : nil
}
}
Tương tự như phần mở rộng UIButton
here
0
phiên bản Swift của câu trả lời @rmaddy:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let frame = self.bounds.insetBy(dx: -20, dy: -20);
return frame.contains(point) ? self : nil;
}
Các vấn đề liên quan
- 1. Cách phóng to khu vực hình ảnh cụ thể trên Canvas theo chiều ngang
- 2. Làm thế nào để vẽ trong khu vực nonclient?
- 3. Làm thế nào để hiện đang thực hiện khu vực?
- 4. Làm thế nào để phóng to camera Kinect?
- 5. MKMapView đặt khu vực
- 6. Làm thế nào để lưu trạng thái hiện tại của khu vực dàn dựng của tôi?
- 7. Làm thế nào để mở rộng vùng thử nghiệm hit WPF cho đối tượng Đường dẫn
- 8. Làm thế nào để vẽ một khu vực của một bitmap với 'màu trắng trong suốt'?
- 9. Làm thế nào để NSView không cắt khu vực giới hạn của nó?
- 10. Làm thế nào để phát hiện NSWindow Phóng to hoặc thu phóng sự kiện?
- 11. Khu vực di động Vs Nhiều khu vực dự án?
- 12. Làm thế nào để làm cho LinearLayout trong scrollview để lấp đầy toàn bộ khu vực
- 13. Làm cách nào để đặt đường viền trên khu vực?
- 14. Perlin Mức độ chi tiết tiếng ồn. Làm thế nào để phóng to trên một phong cảnh?
- 15. UIImage từ một khu vực của UIView
- 16. IPhone, MPMoviePlayerController làm thế nào để vô hiệu hóa phóng to khi nhấn đúp trên màn hình?
- 17. Làm thế nào để làm cho khu vực vẽ Canvas trong suốt trong android?
- 18. Khu vực Google Dart?
- 19. Tăng kích thước hit của nút radio
- 20. Phóng to trên UIImageView
- 21. Phóng to MKMapView và Vùng
- 22. cách để phóng to WPF
- 23. Làm cách nào để thụt lề nội dung của khu vực bằng C#?
- 24. WPF Prism làm thế nào để có quan điểm trùng lặp trong một khu vực
- 25. Phóng to HTML/CSS
- 26. JQVMap khu vực Bấm Lỗi
- 27. Làm thế nào để thêm một lớp học vào một khu vực Drupal 7?
- 28. khu vực PDFBox PDFTextStripperByArea phối
- 29. Làm thế nào để tìm ra khu vực chồng lấn giữa hai đa giác tùy ý
- 30. Làm thế nào để bạn di chuyển một cam kết đến khu vực dàn trong git?
Vì vậy, bạn đang hỏi cách phóng to chế độ xem? – Jordan
Không, tất nhiên tôi biết cách mở rộng khung hình :) Tôi cần phóng to khung hình, mà không ảnh hưởng đến khung hình thực của nó. – Tesseract