프로그래밍 방식으로 UITextField 키보드 유형 변경
다음과 같은 작업이 가능하도록 자동 텍스트 필드의 키보드 유형을 프로그래밍 방식으로 변경할 수 있습니까?
if(user is prompted for numeric input only)
[textField setKeyboardType: @"Number Pad"];
if(user is prompted for alphanumeric input)
[textField setKeyboardType: @"Default"];
있습니다.keyboardType의 재산.UITextField:
typedef enum {
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
UIKeyboardTypeDecimalPad, // A number pad including a decimal point
UIKeyboardTypeTwitter, // Optimized for entering Twitter messages (shows # and @)
UIKeyboardTypeWebSearch, // Optimized for URL and search term entry (shows space and .)
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
} UIKeyboardType;
코드가 표시되어야 합니다.
if(user is prompted for numeric input only)
[textField setKeyboardType:UIKeyboardTypeNumberPad];
if(user is prompted for alphanumeric input)
[textField setKeyboardType:UIKeyboardTypeDefault];
현재 집중된 필드에서 키보드 유형을 즉시 업데이트하려면 한 가지 추가 단계가 있습니다.
// textField is set to a UIKeyboardType other than UIKeyboardTypeEmailAddress
[textField setKeyboardType:UIKeyboardTypeEmailAddress];
[textField reloadInputViews];
전화를 걸지 않고도 있습니다.reloadInputViews선택한 필드(첫 번째 응답자)가 사라지고 초점이 다시 맞춰질 때까지 키보드는 변경되지 않습니다.
전체 목록UIKeyboardType값은 다음에서 확인할 수 있습니다.
typedef enum : NSInteger {
UIKeyboardTypeDefault,
UIKeyboardTypeASCIICapable,
UIKeyboardTypeNumbersAndPunctuation,
UIKeyboardTypeURL,
UIKeyboardTypeNumberPad,
UIKeyboardTypePhonePad,
UIKeyboardTypeNamePhonePad,
UIKeyboardTypeEmailAddress,
UIKeyboardTypeDecimalPad,
UIKeyboardTypeTwitter,
UIKeyboardTypeWebSearch,
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable
} UIKeyboardType;
예, 예를 들어 다음과 같습니다.
[textField setKeyboardType:UIKeyboardTypeNumberPad];
textFieldView.keyboardType = UIKeyboardType.PhonePad
이것은 속전속결입니다.또한 이 기능이 제대로 작동하려면 다음과 같이 설정해야 합니다.textFieldView.delegate = self
텍스트 필드를 영숫자로만 허용하려면 이 속성을 설정합니다.
textField.keyboardType = UIKeyboardTypeNamePhonePad;
스위프트 4
조건이 충족될 때 키보드 유형을 변경하려는 경우 다음을 수행합니다.예:텍스트 필드 수가 4 또는 5일 때 키보드 유형을 기본값에서 숫자 패드로 변경하려면 다음을 수행합니다.
textField.addTarget(self, action: #selector(handleTextChange), for: .editingChanged)
@objc func handleTextChange(_ textChange: UITextField) {
if textField.text?.count == 4 || textField.text?.count == 5 {
textField.keyboardType = .numberPad
textField.reloadInputViews() // need to reload the input view for this to work
} else {
textField.keyboardType = .default
textField.reloadInputViews()
}
_textField .keyboardType = UIKeyboardTypeAlphabet;
_textField .keyboardType = UIKeyboardTypeASCIICapable;
_textField .keyboardType = UIKeyboardTypeDecimalPad;
_textField .keyboardType = UIKeyboardTypeDefault;
_textField .keyboardType = UIKeyboardTypeEmailAddress;
_textField .keyboardType = UIKeyboardTypeNamePhonePad;
_textField .keyboardType = UIKeyboardTypeNumberPad;
_textField .keyboardType = UIKeyboardTypeNumbersAndPunctuation;
_textField .keyboardType = UIKeyboardTypePhonePad;
_textField .keyboardType = UIKeyboardTypeTwitter;
_textField .keyboardType = UIKeyboardTypeURL;
_textField .keyboardType = UIKeyboardTypeWebSearch;
이에 대한 속성이 있습니다.keyboardType문자열이 있는 위치를 바꾸는 것이 좋습니다.@"Number Pad그리고.@"Default와 함께UIKeyboardTypeNumberPad그리고.UIKeyboardTypeDefault.
새 코드는 다음과 같습니다.
if(user is prompted for numeric input only)
[textField setKeyboardType:UIKeyboardTypeNumberPad];
else if(user is prompted for alphanumeric input)
[textField setKeyboardType:UIKeyboardTypeDefault];
행운을 빕니다.
사용하려는 사람들을 위한UIDatePicker입력으로:
UIDatePicker *timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 0, 0)];
[timePicker addTarget:self action:@selector(pickerChanged:)
forControlEvents:UIControlEventValueChanged];
[_textField setInputView:timePicker];
// pickerChanged:
- (void)pickerChanged:(id)sender {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"d/M/Y"];
_textField.text = [formatter stringFromDate:[sender date]];
}
여기가 바로UIKeyboardTypes스위프트 3의 경우:
public enum UIKeyboardType : Int {
case `default` // Default type for the current input method.
case asciiCapable // Displays a keyboard which can enter ASCII characters
case numbersAndPunctuation // Numbers and assorted punctuation.
case URL // A type optimized for URL entry (shows . / .com prominently).
case numberPad // A number pad with locale-appropriate digits (0-9, ۰-۹, ०-९, etc.). Suitable for PIN entry.
case phonePad // A phone pad (1-9, *, 0, #, with letters under the numbers).
case namePhonePad // A type optimized for entering a person's name or phone number.
case emailAddress // A type optimized for multiple email address entry (shows space @ . prominently).
@available(iOS 4.1, *)
case decimalPad // A number pad with a decimal point.
@available(iOS 5.0, *)
case twitter // A type optimized for twitter text entry (easy access to @ #)
@available(iOS 7.0, *)
case webSearch // A default keyboard type with URL-oriented addition (shows space . prominently).
@available(iOS 10.0, *)
case asciiCapableNumberPad // A number pad (0-9) that will always be ASCII digits.
public static var alphabet: UIKeyboardType { get } // Deprecated
}
다음은 목록에서 키보드 유형을 사용하는 예입니다.
textField.keyboardType = .numberPad
프로그래밍 방식으로 UITextField 키보드 유형 변경 swift 3.0
lazy var textFieldTF: UITextField = {
let textField = UITextField()
textField.placeholder = "Name"
textField.frame = CGRect(x:38, y: 100, width: 244, height: 30)
textField.textAlignment = .center
textField.borderStyle = UITextBorderStyle.roundedRect
textField.keyboardType = UIKeyboardType.default //keyboard type
textField.delegate = self
return textField
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(textFieldTF)
}
다음은 Swift 4.2의 키보드 유형입니다.
// UIKeyboardType
//
// Requests that a particular keyboard type be displayed when a text widget
// becomes first responder.
// Note: Some keyboard/input methods types may not support every variant.
// In such cases, the input method will make a best effort to find a close
// match to the requested type (e.g. displaying UIKeyboardTypeNumbersAndPunctuation
// type if UIKeyboardTypeNumberPad is not supported).
//
public enum UIKeyboardType : Int {
case `default` // Default type for the current input method.
case asciiCapable // Displays a keyboard which can enter ASCII characters
case numbersAndPunctuation // Numbers and assorted punctuation.
case URL // A type optimized for URL entry (shows . / .com prominently).
case numberPad // A number pad with locale-appropriate digits (0-9, ۰-۹, ०-९, etc.). Suitable for PIN entry.
case phonePad // A phone pad (1-9, *, 0, #, with letters under the numbers).
case namePhonePad // A type optimized for entering a person's name or phone number.
case emailAddress // A type optimized for multiple email address entry (shows space @ . prominently).
@available(iOS 4.1, *)
case decimalPad // A number pad with a decimal point.
@available(iOS 5.0, *)
case twitter // A type optimized for twitter text entry (easy access to @ #)
@available(iOS 7.0, *)
case webSearch // A default keyboard type with URL-oriented addition (shows space . prominently).
@available(iOS 10.0, *)
case asciiCapableNumberPad // A number pad (0-9) that will always be ASCII digits.
public static var alphabet: UIKeyboardType { get } // Deprecated
}
언급URL : https://stackoverflow.com/questions/7301018/programmatically-change-uitextfield-keyboard-type
'programing' 카테고리의 다른 글
| Lombok 주석이 있는 OpenAPI 생성기를 사용하여 POJO 생성 (0) | 2023.07.01 |
|---|---|
| Angular2에서 객체 배열 정렬 (0) | 2023.07.01 |
| Python에서 대용량 파일의 MD5 해시 가져오기 (0) | 2023.07.01 |
| TypeScript에는 하나 또는 다른 매개 변수가 필요하지만 둘 다 필요하지는 않습니다. (0) | 2023.07.01 |
| 가져오기 오류: bs4(BeautifulSoup)라는 모듈이 없습니다. (0) | 2023.07.01 |