Установив свойство UITextView или UITextField Secure Text Entry
на YES
, пользовательские клавиатуры не будут отображаться по умолчанию, и их также нельзя будет переключать.
Это также, к сожалению, скроет информацию о нажатии клавиш, а также переопределит и отключит автоматические прописные буквы, автокоррекцию и предложения по правописанию. Таким образом, вам нужно переключить обратно на NO
после того, как вы закончите принудительно заставлять пользователя использовать клавиатуру Apple.
Включение и отключение этого свойства может привести к тому, что клавиатура Apple будет первой клавишей, отображаемой по умолчанию.
ТЕПЕРЬ пользователь по-прежнему сможет нажимать глобальную клавишу, поэтому у вас есть два варианта:
• Во-первых, вы можете просто позволить им и определить, используют ли они [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(inputModeDidChange:) name:@"UITextInputCurrentInputModeDidChangeNotification"
object:nil];
, и просто повторно зациклить приведенный выше код secureTextEntry и принудительно переключиться обратно на клавиатуру Apple по умолчанию (непрофессиональный метод, но очень простой в программировании). (*Примечание! Это также не позволит пользователям использовать клавиатуру для диктовки (нажав кнопку со значком микрофона рядом с пробелом), если вы не используете недокументированный код для определения, является ли это диктовкой или нет (который существует и предположительно прошел Проверка Apple для нескольких учетных записей. Информацию об этом можно найти здесь)
Или < br>
• Два: использовать UIWindows, чтобы получить ONTOP клавиатуры по умолчанию, и добавить UIWindow с userInteractionEnabled
, установленным на YES
, покрывающим, где находится эта клавиша (для этого потребуется несколько условных операторов, чтобы убедиться, что вы охватывая правильную «клавишу смены клавиатуры» для каждой возможности (например, альбомная клавиатура iPhone4, портретная клавиатура iPhone5 и т. д.).
Вот некоторый демонстрационный код, хотя он работает для портретных клавиатур (iphone5 и iphone4)
viewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate> {
UITextField *theTextField;
UIWindow *statusWindow;
}
@end
viewController.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
theTextField = [[UITextField alloc] initWithFrame:CGRectMake(50, 50, 50, 250)];
[theTextField becomeFirstResponder];
theTextField.secureTextEntry = YES;//turn back OFF later (like in `viewDidAppear`) and reset textField properties to YES (like auto correct, auto caps, etc).
theTextField.delegate = self;
[self.view addSubview:theTextField];
//UIWindow *statusWindow; MUST be defined in .h file!
statusWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
statusWindow.frame = CGRectMake(37, self.view.frame.size.height-47, 45, 45);
statusWindow.windowLevel = UIWindowLevelStatusBar;
statusWindow.hidden = NO;
statusWindow.backgroundColor = [UIColor clearColor];
UIButton *keyboardCover = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 45, 45)];
keyboardCover.backgroundColor = [UIColor redColor];
[statusWindow addSubview:keyboardCover];
//statusWindow.alpha = 1.00;
statusWindow.userInteractionEnabled = YES;
[statusWindow makeKeyAndVisible];
}
-(void)viewDidAppear:(BOOL)animated {
[theTextField resignFirstResponder];
theTextField.secureTextEntry = NO;
theTextField.autocorrectionType = 2;//ON
theTextField.autocapitalizationType = 2;//ON
theTextField.spellCheckingType = 2;//ON
[theTextField becomeFirstResponder];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Вот пример того, как будет выглядеть этот код... Я использовал пользовательскую клавиатуру, когда я запускал приложение, оно заставило меня на клавиатуру Apple, затем поместил красный квадрат над кнопкой «сменить клавиатуру», из-за чего я не мог нажать кнопку, чтобы сменить клавиатуру. (красный квадрат можно изменить на что угодно, например, на пустую клавишу или значок земного шара в блеклом (отключенном) состоянии.)
![введите здесь описание изображения](https://i.stack.imgur.com/Oi1Kl.png)
person
Albert Renshaw
schedule
10.08.2014