inputAccessoryView:
UITextFields and UITextViews have an inputAccessoryView property, which you can set to any view, that is automatically displayed above and animated with the keyboard.
Note that the view you use should neither be in the view hierarchy elsewhere, nor should you add it to some superview, this is done for you.
翻译:
UITextFields和UITextView有一个inputAccessoryView的属性,当你想在键盘上展示一个自定义的view时,你就可以设置该属性。你设置的view就会自动和键盘keyboard一起显示了。
需要注意的是,你所自定义的view既不应该处在其他的视图层里,也不应该成为其他视图的子视图。其实也就是说,你所自定义的view只需要赋给属性inputAccessoryView就可以了,不要再做其他多余的操作。
http://www.cnblogs.com/xingchen/archive/2011/08/29/2157446.html
我想用这篇文章简单记录下如何自定义软键盘。
软键盘使用的几种方法:
1:使用系统自带键盘
2:使用用户自定义的键盘来取代系统自定义的键盘
3:让自定义的键盘和系统的键盘共同存在
4:直接修改系统键盘
下面详细介绍
1:使用系统自定义键盘
iphone已经给我们提供了系统自定义的软键盘,并且提供了适用与大多数情况下的软键盘,比如:有的是专门的数字键盘,有的是数字和字符都含有的软键盘,这个可以通过属性(KeyboardType)来设定。
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).
#if __IPHONE_4_1 <= __IPHONE_OS_VERSION_MAX_ALLOWED
UIKeyboardTypeDecimalPad, // A number pad with a decimal point.
#endif
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
} UIKeyboardType;
从上面我们可以看出,Apple已经给我们提供了好几种形式的输入软件键盘,我们仅仅通过设置属性(KeyboardType)就可以调用相应的键盘,比如:
textField.keyboardType=UIKeyboardTypeNumberPad;
1.1:有写键盘,我们还可以自定义软键盘Reture键的类型,
typedef enum
{
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
} UIReturnKeyType;
同样的,apple也是已经给我们提供了比较多的return键盘的类型。
这样我们就可以绑定UITextField输入控件调出软键盘后单击reture键盘,触发的函数,
第一步,要帮顶UITextField的委托
第二步:定义return绑定的回调函数:
参考代码:
m_userName.returnKeyType = UIReturnKeyNext;
m_userName.delegate= self;
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//在这里面写入单击键盘RETURE键,之后相应的函数。
return YES;
}
这里我想另外的添加一点知识:
如何让UITextField获取键盘输入焦点:[self.m_userPassword becomeFirstResponder];
我们使用自定义键盘,关键就是选择不同的键盘类型,然后根据实际情况,处理对应的回调函数
2:完全使用用户自定义的键盘来取代系统自定义的键盘
这里就是我们放弃系统自带的键盘,然后使用我们自定义的键盘视图
参考代码:
UIView *keyView ;
Self.textFieldView.inputView = keyView;//输入我们自定义的键盘
self.textFieldView.inputAccessoryView = nil;
运行程序后,当再次调用键盘后就会出现我们自定义的键盘。
3:让自定义的键盘和系统的键盘共同存在
同上面的自定义键盘一样,常见一个新的XIB文件以及一个想关联的一个视图类,
参考代码:
UIView *keyView ;
Self.textFieldView.inputView = nil;//输入我们自定义的键盘
self.textFieldView.inputAccessoryView = keyView;
对你2、3的参考代码你可能就会明白,inputView和inputAccessoryView属性的作用了。
我们可以将键盘看成有两部分组成(当然,键盘还会有其他的部分组成),一部分是inputView,一部分是InputAccessoryView,并 且,inputView在系统键盘的下面的部分,我们调用的系统默认键盘的时候,我们看到的部分就是这个InputView(输入视图),而这个 InputAccessoryView就是键盘顶部的一个部分,当我Nil的时候则不显示,当我们给这个属性赋值的时候,就会显示这个我们添加的视图。
她就像,比如,UITableView的UITableViewHeaderView的那部分视图,如果不设置就看不到,如果设置就可以看到。
当然,仅仅有这些还是不够的,我们还要为我们自定的键盘中的按键添加对应的响应函数。
相关推荐
在iOS开发中,`inputView`和`inputAccessoryView`是两个非常重要的属性,主要用于自定义键盘输入界面。本项目“ios-关于inputView和inputAccessoryView的研究.zip”深入探讨了如何利用这两个属性来实现一个类似系统...
除了自定义输入视图外,还可以通过设置uitextfield的inputAccessoryView属性添加一个附加的工具栏。这个工具栏会出现在键盘上方,可以包含一些操作按钮,比如“撤销”、“重做”或自定义功能。 8. 键盘类型选择: ...
1. `inputAccessoryView`: 这个属性允许我们设置一个附加视图,它会在键盘上方显示。如果你的输入框需要在键盘出现时保持在可视区域,可以将这个附加视图设计成一个透明的视图,并将输入框添加到这个视图中,这样...
一旦视图设计完成,你可以将其设置为UITextField或UITextView的InputAccessoryView属性。 例如: ```swift let accessoryView = MyCustomAccessoryView() textField.inputAccessoryView = accessoryView ``` 在这...
6. **自定义键盘工具条(InputAccessoryView)**:为了提供更丰富的交互,开发者还可以自定义一个UIView作为键盘的工具条,通过设置UITextField或UITextView的`inputAccessoryView`属性实现。这可以添加额外的按钮,...
5. 使用`inputAccessoryView`:为输入框设置一个`inputAccessoryView`,如一个工具条,这样即使键盘弹出,这个工具条也会始终位于键盘上方,保持可见。 至于“没有实现控件复用导致的出现重复文本,以及部分bug”,...
然后将这个工具栏添加到UITextField或UITextView的inputAccessoryView属性上,这样当键盘出现时,工具栏也会一起显示。同样,我们需要在`textFieldShouldReturn:`中处理完成按钮的点击事件。 4. **使用Category或...
3. **Auto Layout**:使用Auto Layout约束,可以通过设置inputAccessoryView或者translatesAutoresizingMaskIntoConstraints属性,结合NSLayoutConstraint来动态调整输入框的布局,使其在键盘弹出时保持在可视范围内...
7. **输入视图(InputView)与输入访问视图(InputAccessoryView)**:键盘控制器可能利用`inputView`和`inputAccessoryView`属性,自定义显示在键盘上方的视图,提供额外的交互界面。 8. **手势处理**:为了防止...
2. 同时,为了实现键盘与TextField之间的交互,如点击“清除”按钮清空内容,我们需要设置UITextField的inputAccessoryView,通常是一个工具栏,包含“完成”或“返回”按钮。 三、处理输入逻辑 1. 小数点的限制:...
在需要使用自定义键盘的界面中,设置`UITextField`或`UITextView`的`keyboardType`属性为`UIKeyboardType.Custom`,并将其`inputView`属性设置为我们之前创建的`KeyboardViewController`实例。 8. **测试与调试** ...
在本教程中,我们将深入探讨如何使用`inputAccessoryView`属性来实现这样一个功能。 首先,我们需要了解`inputAccessoryView`。它是UIResponder类的一个属性,允许我们在键盘上方显示自定义视图。这个视图通常用来...
在本项目中,我们将自定义键盘视图赋值给inputView属性,从而替换默认的系统键盘。这样,当用户点击输入框时,就会显示我们定制的键盘。此外,还可以设置输入辅助视图(inputAccessoryView),例如添加一个“完成”...
使用`inputView`属性将自定义键盘关联到输入视图。同时,可能还需要设置`inputAccessoryView`,比如添加一个“发送”按钮。 5. 处理键盘弹出和隐藏: 当用户点击输入框时,自定义键盘应该弹出。可以监听`...
在需要使用自定义输入框的`UITextField`或`UITextView`对象中,我们将`inputAccessoryView`属性设置为我们之前创建的`UUKeyboardInputView`实例。例如: ```swift textField.inputAccessoryView = ...
2. **使用UIScrollView的contentInset和contentOffset**:如果输入框位于UIScrollView中,可以调整`contentInset`的bottom属性,使视图内容上移,从而避免键盘遮挡输入框。同时,也可以设置`contentOffset`来确保...
为此,我们定义一个名为XMCustomKeyBoardBtn的类别,其中包含一个editableView属性,用来存储需要添加隐藏键盘功能的控件(如UITextField、UITextView或UISearchBar)。 ```objc @interface XMCustomKeyBoardBtn : ...
除了输入视图之外,还可以使用 `inputAccessoryView` 属性添加一个工具条,通常包含一些操作按钮,如“发送”或“清除”按钮。这可以与输入框一起出现在键盘上方。 7. 执行代码逻辑: 实现这一功能可能涉及到在 `...
`inputView`属性用于设置显示在输入框下方的视图,而`inputAccessoryView`则用于设置输入框上方的视图,例如表情键盘。通过设置这两个属性,我们可以创建一个拥有光标和拖动功能的“真正”的键盘。在用户操作过程中...
Password-keyboard随机变换数字位置的密码键盘。...4.设置需要输入密码的textFieldself.textField.inputAccessoryView = [[LVKeyboardAccessoryBtn alloc] init];self.textField.inputView = self.keyboard;