Sortowane! Ja po prostu użyć widoku tekstu 1x1px i użyć metody delegata textViewDidChangeSelection:
EDIT: Dla iOS 6 musiałem zmienić widok tekstowy do 50x50px (lub przynajmniej na tyle, aby faktycznie wyświetlić tekst) to zadziałało
Udało mi się również wyłączyć klawiaturę ekranową po odłączeniu pedału.
To jest mój kod w viewDidLoad:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillAppear:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillDisappear:) name:UIKeyboardWillHideNotification object:nil];
UITextView *hiddenTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[hiddenTextView setHidden:YES];
hiddenTextView.text = @"aa";
hiddenTextView.delegate = self;
hiddenTextView.selectedRange = NSMakeRange(1, 0);
[self.view addSubview:hiddenTextView];
[hiddenTextView becomeFirstResponder];
if (keyboardShown)
[hiddenTextView resignFirstResponder];
keyboardShown
jest zadeklarowana jako bool
w moim pliku nagłówka.
Następnie dodać te metody:
- (void)textViewDidChangeSelection:(UITextView *)textView {
/******TEXT FIELD CARET CHANGED******/
if (textView.selectedRange.location == 2) {
// End of text - down arrow pressed
textView.selectedRange = NSMakeRange(1, 0);
} else if (textView.selectedRange.location == 0) {
// Beginning of text - up arrow pressed
textView.selectedRange = NSMakeRange(1, 0);
}
// Check if text has changed and replace with original
if (![textView.text isEqualToString:@"aa"])
textView.text = @"aa";
}
- (void)keyboardWillAppear:(NSNotification *)aNotification {
keyboardShown = YES;
}
- (void)keyboardWillDisappear:(NSNotification *)aNotification {
keyboardShown = NO;
}
Mam nadzieję, że ten kod pomaga kogoś, kto szuka rozwiązania tego problemu. Zapraszam do korzystania z niego.
Czy to działa z 'UIWebView'? – Dmitry
@Altaveron właściwość keyCommands jest właściwością obiektu UIResponder, a funkcja UIWebView dziedziczy po URIesponder, więc nie widzę powodu, dla którego nie będzie działać. – amergin
'UIWebView' jest kontenerem dla wielu subviews. – Dmitry