2009-09-10 4 views
0

Как я могу исчезнуть цифровой клавиатуры в iPhone, потому что нет никакого ключа возврата в него, что означает, что не собирается отвечать наDisapperiang IPhone Цифровая клавиатура

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
+0

дубликата: - - - - - - - - И это было только на первой странице результатов поиска ... –

+1

Я боюсь, что вы ошибаетесь, потому что все они говорят о том, что клавиатура не относится к числовому типу, Я знаю, как отключить клавиатуру, когда она не является числовой, ее другим случаем, когда вам нужно исчезнуть «NUMERIC Keyboard». И я ищу, прежде чем ставить этот вопрос. – itsaboutcode

+0

Вы можете легко поместить кнопку на свой экран, чтобы убрать клавиатуру после ввода пользователем номера. Разве это не то, как работает телефонное приложение? Или вы можете поместить панель инструментов над клавиатурой с помощью кнопки «don» на ней или любого количества вещей (автоматически отключайте клавиатуру после x секунд бездействия, как только текст в поле проверяется и т. Д.) –

ответ

0

Попробуйте это:

[theTextField resignFirstResponder]; 
+0

Ну, вы делаете это в функции, которую я написал выше, вот так. Во всяком случае, где я должен использовать этот код для работы? – itsaboutcode

+0

У меня есть много текстовых полей на мой взгляд, а также его не работает для цифровой клавиатуры –

2

Вот ответ ..

-(void) touchesBegan :(NSSet *) touches withEvent:(UIEvent *)event 

{ 

    //[URL resignFirstResponder]; 

    //[Password resignFirstResponder]; 

    [speedField resignFirstResponder]; 

    [super touchesBegan:touches withEvent:event ]; 

} 
+0

не работает, когда у меня есть подвид в одном представлении –

-2

Здесь вы идете. Расширьте свой класс UIViewController. Но как мы узнаем, что это кнопка? Adding Done Button to Only Number Pad Keyboard on iPhone

// 
// UIViewController+NumPadReturn.m 
// iGenerateRandomNumbers 
// 
// Created by on 12/4/10. 
// Copyright 2010 __MyCompanyName__. All rights reserved. 
// 

#import "UIViewController+NumPadReturn.h" 


@implementation UIViewController (NumPadReturn) 

-(void) viewDidLoad{ 
    // add observer for the respective notifications (depending on the os version) 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { 
     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(keyboardDidShow:) 
                name:UIKeyboardDidShowNotification 
                object:nil];  
    } else { 
     [[NSNotificationCenter defaultCenter] addObserver:self 
               selector:@selector(keyboardWillShow:) 
                name:UIKeyboardWillShowNotification 
                object:nil]; 
    } 

} 


- (void)keyboardWillShow:(NSNotification *)note { 
    // if clause is just an additional precaution, you could also dismiss it 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 3.2) { 
     [self addButtonToKeyboard]; 
    } 
} 

- (void)keyboardDidShow:(NSNotification *)note { 
    // if clause is just an additional precaution, you could also dismiss it 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { 
     [self addButtonToKeyboard]; 
    } 
} 

- (void)addButtonToKeyboard { 
    // create custom button 
    UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    doneButton.frame = CGRectMake(0, 163, 106, 53); 
    doneButton.adjustsImageWhenHighlighted = NO; 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.0) { 
     [doneButton setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal]; 
     [doneButton setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted]; 
    } else {   
     [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]; 
    UIView* keyboard; 
    for(int i=0; i<[tempWindow.subviews count]; i++) { 
     keyboard = [tempWindow.subviews objectAtIndex:i]; 

     // keyboard found, add the button 
     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) { 
      if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) 
       [keyboard addSubview:doneButton]; 
     } else { 
      if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) 
       [keyboard addSubview:doneButton]; 
     } 
    } 


} 

- (void)doneButton:(id)sender { 
    NSLog(@"doneButton"); 
    [self.view endEditing:TRUE]; 
} 
+1

-1 это общий взлом и его не следует использовать. Что делать, если Apple решит изменить имя «UIKeyboard» на «UIKBView?». Вы никогда не должны полагаться на недокументированное поведение или детали реализации, чтобы ваш код работал правильно.Если вам нужно поведение, которое невозможно без недокументированных материалов, напишите ошибку. –

0

Почему бы не использовать «Числа и пунктуация» клавиатуры вместо «Числовой»? Это сэкономит ваше время

3

Использование resignFirstResponder в touchesBegan, например, так:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch * touch = [touches anyObject]; 
    if(touch.phase == UITouchPhaseBegan) { 
     [self.myTextField resignFirstResponder]; 
    } 
} 

Вам может понадобиться вызвать это на несколько текстовых полей, если вы не знаете, где в центре внимания в настоящее время находится; Я не тестировал этот случай.

Кроме того, в Interface Builder, вы должны включить "взаимодействия с пользователем Enabled" флажок для вида, или программно использовать:

myView.userInteractionEnabled = YES; 
Смежные вопросы