клавиатура цифровой клавиатуры не показывает клавишу возврата в iphone - PullRequest
11 голосов
/ 29 апреля 2011

Я новичок в технологии iPhone.Я сохранил проблему в приложении для iPhone, но когда я использую цифровую клавиатуру с текстовым полем, на клавиатуре не отображается кнопка возврата / готово.

Как скрыть клавиатуру с цифровой клавиатурой после ввода номера?в текстовом поле?У вас есть какие-то решения для этого.Пожалуйста, предоставьте помощь.

Ответы [ 5 ]

11 голосов
/ 16 июля 2012

Вы можете сделать это следующим образом:

@property (nonatomic, strong) UITextField *textField;

- (void)viewDidLoad {
    [super viewDidLoad];

    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100, 40)];
    UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonDidPressed:)];
    UIBarButtonItem *flexableItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL];
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, [[self class] toobarHeight])];
    [toolbar setItems:[NSArray arrayWithObjects:flexableItem,doneItem, nil]];
    self.textField.inputAccessoryView = toolbar;
}

- (void)doneButtonDidPressed:(id)sender {
    [self.textField resignFirstResponder];
}

+ (CGFloat)toolbarHeight {
    // This method will handle the case that the height of toolbar may change in future iOS.
    return 44.f;
}
6 голосов
/ 30 ноября 2011

вы должны использовать UIKeyboardTypeNumberPad, попробуйте вместо этого UIKeyboardTypeNumbersAndPunctuation, он не только покажет клавишу возврата, но и предоставит вам некоторые дополнительные пунктуации

1 голос
/ 29 апреля 2011

Нет возврата или готовой клавиши на цифровой клавиатуре. Вы можете сделать одну вещь, когда пользователь нажимает за пределами текстового поля, вы можете скрыть клавиатуру. Вы должны сделать что-то вроде этого -

if (there is a touch outside of your textField)
{

   [textField resignFirstResponder];

}
0 голосов
/ 15 декабря 2014
- (void)viewDidLoad
{

    [super viewDidLoad];
    UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    numberToolbar.barStyle = UIBarStyleBlackTranslucent;
    numberToolbar.items = [NSArray arrayWithObjects:
                           [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                           [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
                           nil];
    [numberToolbar sizeToFit];

    _txt_mobileno.inputAccessoryView = numberToolbar;

}

-(void)doneWithNumberPad
{
    [_txt_mobileno resignFirstResponder];

}
0 голосов
/ 15 апреля 2012

На этот вопрос уже ответили, я знаю, потому что именно так я получил решение. У вас есть 2 варианта, во-первых, чтобы скрыть клавиатуру, прикоснувшись к основному экрану, который отправит сообщение «Закончено редактирование». скрывает клавиатуру [self.view endEditing: YES];

Если вы добавляете сенсорный прослушиватель к основному виду, вы должны реализовать условие, чтобы все остальные кнопки продолжали работать.

То, что вы хотите сделать, чтобы смоделировать ключ возврата, это добавить его следующим образом:

При регистрации на клавиатуре показывалось уведомление и добавлялось это в код:

if ([self.passCodeLabel isFirstResponder])
        {
            UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
            doneButton.frame = CGRectMake(0, 163, 106, 53);
            //doneButton.frame = CGRectMake(0, 163, 257, 257);
            doneButton.adjustsImageWhenHighlighted = NO;
            [doneButton setImage:[UIImage imageNamed:@"doneup.png"] forState:UIControlStateNormal];
            [doneButton setImage:[UIImage imageNamed:@"donedown.png"] forState:UIControlStateHighlighted];
            [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

            // locate keyboard view
            UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
            NSLog(@"%@",[[UIApplication sharedApplication] windows]);

            UIView* keyboard;
            NSLog(@"Shared applicaiton windows count:%i",tempWindow.subviews.count);
            for(int i=0; i<[tempWindow.subviews count]; i++) {
                keyboard = [tempWindow.subviews objectAtIndex:i];
                NSLog(@"%@",[keyboard description]);
                // keyboard view found; add the custom button to it
                if([[keyboard description] hasPrefix:@"<UIPeripheralHostView"] == YES)
                {
                    NSLog(@"Adding return button");
                    [keyboard addSubview:doneButton];
                }
            }
        } 

Это добавит ваше собственное изображение кнопки «Готово» на клавиатуру (которую вы можете просто скопировать, сделав снимок экрана с пустым слотом и добавив готовый текст).

Кстати, код, который я вставил, работает на моем макете. Возможно, вам придется немного его изменить, но принцип тот же.

  • Создать кнопку

  • Поиск подпредставления клавиатуры

  • Добавить кнопку в это подпредставление

...