Это предотвращает появление popover, когда пользователь нажимает на выделенный текст.
Чтобы разрешить первый кран всегда выбрать весь текст, и есть второй кран Deselect, сохранить текущий код в методе textFieldDidBeginEditing
и расширить UITextField
переопределить canPerformAction:withSender:
, чтобы предотвратить поповер появляться, например, так:
UITextField Подкласс
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender {
/* Prevent action popovers from showing up */
if (action == @selector(paste:)
|| action == @selector(cut:)
|| action == @selector(copy:)
|| action == @selector(select:)
|| action == @selector(selectAll:)
|| action == @selector(delete:)
|| action == @selector(_define:)
|| action == @selector(_promptForReplace:)
|| action == @selector(_share:))
{
//Get the current selection range
UITextRange *selectedRange = [self selectedTextRange];
//Range with cursor at the end, and selecting nothing
UITextRange *newRange = [self textRangeFromPosition:selectedRange.end toPosition:selectedRange.end];
//Set the new range
[self setSelectedTextRange:newRange];
return NO;
} else {
//Handle other actions?
}
return [super canPerformAction:action withSender:sender];
}
Методы UITextFieldDelegate
//Select the text when text field receives focus
- (void) textFieldDidBeginEditing:(UITextField *)textField
{
[textField selectAll:nil];
}
//Hide the keyboard when the keyboard "Done" button is pressed
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return TRUE;
}
Надеюсь, что это поможет!
Просто для подтверждения, на данный момент требуется два крана, не так ли? Один коснитесь, чтобы показать popover, затем еще один, чтобы отменить выбор? – Sheamus
Да, это требует двух кранов. Но, выбирая все, вам не нужно показывать поп. –