Tôi muốn trả lời các sự kiện chạm (cụ thể là UIControlEventTouchUpInside
và UIControlEventTouchUpOutside
) trên số UITextField
, nhưng sự kiện duy nhất đi qua là UIControlEventTouchCancel
.Làm cách nào tôi có thể phản hồi các sự kiện chạm trên UITextField?
Tôi không thể sử dụng UIControlEventEditingDidBegin
, bởi vì nó chỉ xảy ra khi trường đạt tiêu điểm, đó không phải là những gì tôi đang cố gắng phát hiện. Tôi muốn biết khi nào người dùng nhấc ngón tay của họ lên và cho dù đó là bên trong hay bên ngoài trường văn bản, bất kể trạng thái lấy nét hiện tại là gì.
Có ai biết cách để thực hiện việc này không?
Để rõ ràng, tôi đã thử sử dụng addTarget:action:forControlEvents
và nó không hoạt động. Sự kiện liên lạc bị ngăn cản bởi việc hủy bỏ. Tôi muốn một cách để phát hiện chạm lên trước khi số UITextField
tiêu thụ và tạo sự kiện Hủy.
Ngoài ra, tôi muốn tránh tạo thêm bất kỳ chế độ xem nào nếu có thể.
Không, điều đó chắc chắn không hoạt động. Điều đầu tiên tôi đã thử. Phương thức "yourDesiredMethod" không bao giờ được gọi. Tôi có thể nhận các sự kiện cho UIControlEventTouchDown, nhưng cả sự kiện TouchUp đều không được kích hoạt. Thay vào đó, một sự kiện UIControlEventTouchCancel được kích hoạt. Tôi không thể sử dụng sự kiện đó làm proxy hack cho sự kiện mà tôi muốn, bởi vì nó cũng được kích hoạt khi báo chí kéo dài vòng phóng to và khi một thứ khác hủy đầu vào của người dùng như hộp thoại phương thức hoặc màn hình khóa . – theK42
Wow, tôi cho rằng nó sẽ hoạt động giống như bất kỳ lớp học dựa trên UIView nào khác. Bạn có thể tạo UITextField tùy chỉnh và ghi đè phương thức touchesBegan: đảm bảo trở thành người trả lời đầu tiên trong các trường hợp thích hợp để bàn phím vẫn hiển thị. –
Vì vậy, tôi đã cố gắng ghi đè quan trọngBan/Kết thúc/Hủy, và điều đó cũng đã cho tôi một cặp Bắt đầu/Hủy, không có sự kiện Kết thúc. Điều này thực sự bực bội! Ngoài ra, việc ghi đè các phương thức đó không ngăn cản textField trở thành người trả lời đầu tiên, vì vậy lớp cơ sở đang xử lý cảm ứng trước khi tôi có cơ hội! – theK42