Tôi có một bàn phím tùy chỉnh mà tôi đang sử dụng để chỉnh sửa văn bản trong mytextField
và nó hoạt động tuyệt vời. Tuy nhiên, tôi không bao giờ có thể nhận được các đại biểu shouldChangeCharactersInRange
để thực thi bằng cách sử dụng bàn phím tùy chỉnh của tôi. Nó thực hiện khi tôi sử dụng bàn phím thực tế của tôi (rõ ràng không phải là bàn phím iPhone mặc định, vì tôi đã đặt mytextField.inputView = numberPad.view). Tôi nên làm gì để khiến đại biểu shouldChangeCharactersInRange
ủy quyền sử dụng bàn phím tùy chỉnh? BTW, bàn phím tùy chỉnh chỉ là một loạt các nút.Làm cách nào tôi có thể nhận được UITextFieldDelegate.shouldChangeCharactersInRange để kích hoạt chế độ nhập liệu tùy chỉnh?
- (void) numberPadPressed: (UIButton *)sender {
[mytextField insertText:[[NSNumber numberWithInt:sender.tag] stringValue]];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
NSLog(@"shouldChangeCharactersInRange: %@", resultingString);
return true;
}
- (void)viewDidLoad {
mytextField.text = @"";
mytextField.inputView = numberPad.view;
mytextField.delegate = self;
[mytextField becomeFirstResponder];
}
Tôi vừa thử nghiệm sử dụng đề xuất ở trên, nhưng vẫn nênChangeCharactersInRange không kích hoạt khi numberPadPressed được gọi. Tôi nghĩ rằng chúng tôi đang đi đúng hướng ... – docchang
Tôi sẽ tính toán dải ô như thế nào? Có cách nào để di chuyển con trỏ tại bất kỳ vị trí cụ thể nào trong TextField không? – docchang
Tôi đã cập nhật mẫu mã. Sử dụng [mytextField selectedRange] để có phạm vi được chọn, đây sẽ là điểm chèn nếu không có lựa chọn hoặc sẽ là phạm vi ký tự nếu có lựa chọn. –