Mam niestandardową klawiaturę, której używam do edycji tekstu w mytextField
i działa świetnie. Nie mogę jednak uzyskać delegata shouldChangeCharactersInRange
do wykonania przy użyciu mojej niestandardowej klawiatury. Wykonuje się, gdy używam mojej faktycznej klawiatury (oczywiście nie jest to domyślna klawiatura iPhone'a, ponieważ ustawiłem mytextField.inputView = numberPad.view). Co należy zrobić, aby delegat shouldChangeCharactersInRange
mógł strzelać przy użyciu niestandardowej klawiatury? BTW, niestandardowa klawiatura to tylko garść przycisków.Jak uzyskać UITextFieldDelegate.shouldChangeCharactersInRange na uruchamianie za pomocą niestandardowego inputView?
- (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];
}
Właśnie przetestowałem, korzystając z powyższej sugestii, ale nadal powinno się zmieniaćChangeCharactersInRange nie uruchamiał się podczas wywoływania metody numberPadPressed. Myślę, że jesteśmy na dobrej drodze ... – docchang
Jak obliczyć zakres? Czy istnieje sposób przesuwania kursora w jakiejkolwiek określonej pozycji w polu TextField? – docchang
Zaktualizowałem próbkę kodu. Użyj [mytextField selectedRange], aby uzyskać wybrany zakres, który będzie po prostu punktem wstawienia, jeśli nie będzie selekcji, lub będzie zakresem znaków, jeśli istnieje wybór. –