Ứng dụng của tôi có xu hướng mất theo dõi những gì mà người trả lời nên xử lý một sự kiện cảm ứng.Sự kiện UIButton không được xử lý 1% thời gian: tôi nên đổ lỗi cho ai trong chuỗi trả lời của tôi?
tình hình của tôi:
- một file XIB xác định 3 điểm:
- một cái nhìn như quan điểm của tập tin của chủ sở hữu xem
- 2 bổ sung được thêm vào quan điểm phân cấp lập trình
- Một trong các chế độ xem phụ (SubviewA) có
UIButton
, được định cấu hình để gửi bộ chọnmyAction:
tớiFirstResponder
khi "Touch Up Inside" Sự kiện này được phát hiện - SubviewA biết làm thế nào để xử lý
myAction:
99% thời gian, mọi thứ diễn ra tốt đẹp. Khi người dùng chạm vào nút, SubviewA sẽ xử lý thông báo myAction:
và mọi thứ đều ổn. Nhưng đôi khi, người dùng phàn nàn rằng nút "đóng băng" và tôi thực sự tự sao chép nó một vài lần mà không thể tìm thấy một kịch bản rõ ràng để làm cho nó xảy ra theo yêu cầu.
điều tra của tôi cho đến nay là:
- khi không có gì xảy ra khi nhấn vào nút:
- nút của tôi phát hiện vòi nguyên nhân nó được nhấn mạnh khi ép
myAction:
không được gọi vào SubviewA- phần còn lại của giao diện người dùng vẫn đáp ứng
Mã tôi đang nói đến là một số mã cũ mà tôi đang cố khắc phục. Có chế độ xem phản hồi sự kiện cho một trong các cuộc phỏng vấn của nó giống như một kiến trúc kỳ lạ đối với tôi. Cho đến nay, tôi luôn sử dụng Chủ sở hữu tệp để xử lý các sự kiện liên lạc, vì vậy tôi đã chỉ ra Chuỗi phản hồi là lý tưởng chịu trách nhiệm về lỗi này. Nhưng tôi không thể tìm thấy lý do tại sao! Từ sự hiểu biết của tôi, như nút không biết làm thế nào để xử lý tin nhắn và không có bộ điều khiển xem kèm theo nó, nó nên chuyển tiếp nó đến superview của nó (ButtonA, mà biết làm thế nào để xử lý nó)!
Câu hỏi của tôi là:
- bất kỳ ý tưởng về nơi mà các lỗi có thể đến từ đâu? (chuỗi trả lời?)
- bất kỳ nhận xét nào về việc liệu chế độ xem có nên xử lý các hành vi nút của chính nó hoặc nếu trình điều khiển chế độ xem nên thực hiện điều đó không?
Chỉnh sửa: Tôi có ý tưởng về cách khắc phục lỗi: kết nối thao tác nút thẳng với SubviewA thay vì sử dụng FirstResponder trong bộ dựng giao diện. Lý do tại sao tôi đăng câu hỏi này là cố gắng hiểu tại sao chuỗi trả lời lại không hoạt động theo thời gian.
Rất vui khi thấy một số mã ... – tarmes
Không có mã .m: chỉ là các tệp XIB, không thực sự dễ chia sẻ. –