ai có thể giúp tôi với điều này: tôi cần phải thực hiện UITextField
cho số đầu vào. Số này phải luôn ở định dạng thập phân với 4 địa điểm, ví dụ: 12.3456 hoặc 12.3400. Vì vậy, tôi đã tạo NSNumberFormatter
giúp tôi có vị trí thập phân.làm thế nào để di chuyển con trỏ trong UITextField sau khi thiết lập giá trị của nó
Tôi đang thiết lập các giá trị UITextField
trong phương pháp
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
. Tôi nhập vào đầu vào, sử dụng trình định dạng và cuối cùng gọi [textField setText: myFormattedValue];
Điều này làm việc tốt nhưng cuộc gọi này cũng di chuyển con trỏ đến cuối trường của tôi. Điều đó là không mong muốn. Ví dụ. Tôi có 12.3400 trong trường của tôi và con trỏ nằm ở đầu và số loại người dùng 1. Giá trị kết quả là 112.3400 nhưng con trỏ được di chuyển ở cuối. Tôi muốn kết thúc bằng con trỏ khi người dùng mong đợi (ngay sau số 1 được thêm gần đây). Có một số chủ đề về cách đặt con trỏ trong TextView
nhưng đây là UITextField
. Tôi cũng đã cố gắng để nắm bắt selectedTextRange
của trường, lưu vị trí con trỏ đúng cách nhưng sau khi gọi setText
phương thức, điều này sẽ tự động thay đổi và nguồn gốc UITextRange
bị mất (thay đổi thành hiện tại). hy vọng lời giải thích của tôi là rõ ràng.
Vui lòng giúp tôi với điều này. Cảm ơn nhiều.
EDIT: Cuối cùng, tôi quyết định chuyển đổi chức năng để thay đổi định dạng sau khi chỉnh sửa toàn bộ và hoạt động đủ tốt. Tôi đã thực hiện việc này bằng cách thêm công cụ chọn forControlEvents:UIControlEventEditingDidEnd
.
Khi bạn đọc những 'selectedTextRange', bạn không thể sao chép nó như một thuộc tính trong lớp hoạt động như các' UITextFieldDelegate' và sau đó tái thiết lập nó sau 'setText:'? –
Phillip, không hoạt động.Sau khi bạn đặt văn bản với setText, UITextRange bạn đã thu thập trước khi thiết lập văn bản được đặt lại thành null và vì vậy bạn không thể áp dụng lại nó sau đó đến UITextField đã hoàn thành. – JasonD