Bỏ qua các nút và chỉ đơn giản là đáp ứng chạm vào bạn chế độ xem có chứa vòng kết nối.
Tạo CGPath cho từng khu vực mà bạn muốn chụp chạm, khi giao diện người dùng của bạn nhận được một liên lạc, hãy kiểm tra tư cách thành viên bên trong đường dẫn.
[Sửa câu trả lời để hiển thị chi tiết thực hiện bộ xương - TomH]
Đây là cách tôi sẽ tiếp cận vấn đề: (Tôi đã không kiểm tra mã này và cú pháp có thể không hoàn toàn đúng, nhưng đây là ý tưởng chung)
1) Sử dụng PS hoặc ứng dụng tạo hình ảnh yêu thích của bạn, tạo một png của vòng kết nối quý. Thêm nó vào dự án XCode của bạn.
2) Thêm UIView vào giao diện người dùng. Đặt nội dung của lớp UIView thành png.
self.myView = [[UIView alloc] initWithRect:CGRectMake(10.0, 10.0, 100.0, 100,0)];
[myView.layer setContents:(id)[UIImage loadImageNamed:@"my.png"]];
3) Tạo CGPath mô tả khu vực trong UIView mà bạn quan tâm.
self.quadrantOnePath = CGPathCreateMutable();
CGPathMoveToPoint(self.quadrantOnePath, NULL, 50.0, 50.0);
CGPathAddLineToPoint(self.quadrantOnePath, NULL, 100.0, 50.0);
CGPathAddArc(self.quadrantOnePath, NULL, 50.0, 50.0, 50.0, 0.0, M_PI2, 1);
CGPathCloseSubpath(self.quadrantOnePath);
// create paths for the other 3 circle quadrants too!
4) Thêm một UIGestureRecognizer và lắng nghe/quan sát cho vòi trong giao diện
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[tapRecognizer setNumberOfTapsRequired:2]; // default is 1
5) Khi tapRecognizer gọi chọn mục tiêu
- (void)handleGesture:(UIGestureRecognizer *) recognizer {
CGPoint touchPoint = [recognizer locationOfTouch:0 inView:self.myView];
bool processTouch = CGPathContainsPoint(self.quadrantOnePath, NULL, touchPoint, true);
if(processTouch) {
// call your method to process the touch
}
}
Đừng quên để giải phóng tất cả mọi thứ khi thích hợp - sử dụng CGPathRelease để giải phóng các đường dẫn. Một ý nghĩ khác: Nếu đồ họa mà bạn đang sử dụng để đại diện cho góc phần tư của bạn chỉ đơn giản là một màu đầy (tức là không có đồ họa ưa thích, hiệu ứng lớp, vv), bạn cũng có thể sử dụng đường dẫn bạn tạo trong phương pháp drawRect của UIView. để vẽ các góc tọa độ. Điều này sẽ giải quyết một trong những thất bại của phương pháp trên: không có sự tích hợp chặt chẽ giữa đồ họa và các đường dẫn được sử dụng để kiểm tra các điểm chạm. Tức là, nếu bạn hoán đổi đồ họa cho một thứ gì đó khác, hãy thay đổi kích thước của hình ảnh, v.v., đường dẫn của bạn được sử dụng để kiểm tra chạm sẽ không đồng bộ. Có khả năng mã bảo trì cao.
Nếu nó là đơn giản như vậy. Nhu cầu của tôi là một vòng quay 45 độ của điều đó vì vậy tiếc là nó không phải là khá đơn giản như vậy. – David26th
Bây giờ tôi thấy vấn đề – vikingosegundo
@ David26th xem chỉnh sửa của tôi – vikingosegundo