Trong chương trình của tôi, tôi có UITapGestureRecognizer
mà tôi đã khởi tạo với initWithTarget: action:
. Tôi đã chuyển vào bộ chọn để gọi phương thức theo tên PlanetTapped: (UIImageView *)aPlanet
. Điều này gọi là phương pháp tốt, tuy nhiên tôi muốn biết làm thế nào để vượt qua đối số vào action:
như bạn sẽ với performSelector: withObject
. Đây có phải là popssible? Nó sẽ có ý nghĩa để cho phép bạn gửi các đối số cho bộ chọn của UIGestureRecognizer
. Bất kỳ trợ giúp được đánh giá cao.Gửi đối số cho bộ chọn khởi chạy trình nhận dạng cử chỉ?
Trả lời
Chữ ký chính xác cho các phương pháp để gọi sẽ là:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer
sau đó bạn có thể truy cập vào quan điểm cho rằng đã nhận được cử chỉ bằng cách gọi:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer {
UIImageView* aPlanet = gestureRecognizer.view;
...
}
Trên thực tế, đây là những gì UIGestureRecognizer reference trạng thái:
Trình nhận dạng cử chỉ có một hoặc nhiều cặp hành động mục tiêu được liên kết với nó. Nếu có nhiều cặp mục tiêu-hành động, chúng là rời rạc, và không tích lũy. Việc nhận dạng cử chỉ dẫn đến việc gửi một thông báo hành động đến một mục tiêu cho mỗi cặp đó. Các phương thức hành động được gọi phải tuân theo một trong các chữ ký sau:
- (void) handleGesture;
- (void) handleGesture: (UIGestureRecognizer *) gestureRecognizer;
- (void)viewDidLoad
{
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressOnPhotos:)];
[yourView addGestureRecognizer:longPressRecognizer];
}
- (IBAction)handleLongPressOnPhotos:(UILongPressGestureRecognizer *)sender{
// use "sender.view" to get the "yourView" you have long pressed
}
hy vọng đây sẽ giúp bạn.
Trong Swift 3.0, chữ ký chức năng là như sau (thay thế một lớp cử chỉ nhận dạng như thích hợp trong những ví dụ):
func myButtonLongTouch(_ sender: UILongPressGestureRecognizer)
Bạn tham khảo chức năng này khi thiết lập Recognizers Gesture của bạn như sau:
longTouchGesture = UILongPressGestureRecognizer(target: self, action: #selector(myButtonLongTouch(_:)))
Sau đó, để truy cập vào xem (trong trường hợp của tôi, một nút) mà đã được ép, sử dụng mã:
if let button = sender.view as? UIButton {
// Your code here
}
Cuối cùng, đừng quên rằng chức năng này được gọi là nhiều lần (thường là khi cử chỉ bắt đầu và khi nó kết thúc), vì vậy bạn sẽ muốn kiểm tra trạng thái, mà bạn có thể làm như sau:
if (sender.state == UIGestureRecognizerState.ended) {
// Your code here
}
- 1. Mất nhận dạng cử chỉ trong UIPopoverController
- 2. cách xóa hoàn toàn trình nhận dạng cử chỉ
- 3. Làm cách nào để phát hiện cử chỉ hình tròn qua Trình nhận dạng cử chỉ?
- 4. Nhận dạng cử chỉ Thư viện JavaScript
- 5. Trình nhận dạng cử chỉ và Bảng nhìn
- 6. Trình nhận dạng cử chỉ đồng thời trong SDK SDK
- 7. Trình nhận dạng cử chỉ (vuốt) trên UIImageView
- 8. Nhận dạng cử chỉ OpenCV (cho trình phát đa phương tiện)
- 9. Nhận dạng cử chỉ sử dụng mô hình markov ẩn
- 10. Nhận dạng cử chỉ trên iPad - Trả lời chậm
- 11. Cách thực hiện Nhận dạng cử chỉ bằng Accelerometers
- 12. Tôi có cần phải phát hành trình nhận dạng cử chỉ không?
- 13. Qt, Cử chỉ. TapAndHold và Vuốt không được nhận dạng
- 14. Trình nhận dạng cử chỉ không hoạt động - UIImageView bên trong một UIScrollView
- 15. Tôi làm cách nào để triển khai trình nhận dạng cử chỉ trong OS X?
- 16. iPhone UIView touchesMoved: withEvent: không được gọi trên UIView với bộ nhận dạng cử chỉ
- 17. Tắt trình nghe cử chỉ trên DrawerLayout
- 18. Chạy mã node.js chỉ hiển thị số nhận dạng nút
- 19. Nhận biết các số sử dụng cử chỉ
- 20. Tùy chọn để nhận dạng các đối tượng duy nhất trong thời gian chạy?
- 21. iOS - UITapGestureRecognizer - Bộ chọn với đối số
- 22. Gửi đối số cho một hàm tạo tĩnh trong Java?
- 23. Tại sao cửa hàng nhận dạng cử chỉ mạnh theo mặc định
- 24. Cách ưu tiên nhận dạng cử chỉ và chạm vào UIView
- 25. Có khung công tác Java thuần túy để nhận dạng cử chỉ không?
- 26. [UIImageView _isResizable]: bộ chọn không được nhận dạng được gửi đến dụ SIGABRT
- 27. drawLayer: inContext - Bộ chọn không được nhận dạng được gửi đến cá thể
- 28. Chương trình khởi chạy với tham số
- 29. SWRevealViewController là không khi thêm công cụ nhận dạng cử chỉ
- 30. Đặt trình xử lý mặc định cho ngoại lệ "bộ chọn không được nhận dạng"
Ahh, tất nhiên rồi. Tôi nên nghĩ về điều đó. Cảm ơn bạn đã giúp đỡ! – Fitzy