我有一个工具栏并制作了这段代码,以便在我打开它时学习如何将它放在键盘上方,但是这样做或键盘出现后。
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *textField;
@property (weak, nonatomic) IBOutlet UIToolbar *toolbar;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.textField.delegate = self;
self.toolbar.delegate = self;
self.textField.inputAccessoryView = self.toolbar;
self.textField.inputView = self.toolbar;
[self.toolbar removeFromSuperview];
[self.textField becomeFirstResponder];
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
self.textField.inputAccessoryView = self.toolbar;
}
答案 0 :(得分:1)
您的专栏[self.toolbar removeFromSuperview];
导致工具栏变为nil
,因此无法显示。
正如@jammycoder所说,你只需要设置文本字段的inputAccessoryView
。他建议并删除行self.textField.inputView = self.toolbar;
修改强>
我已经设置了一个简单的项目,并在故事板中的视图控制器上放置了UIToolbar
和UITextView
。这两个视图连接(IBOutlets)到ViewController,就像可能那样。
如果我使用你的代码它确实没有显示键盘,为什么?因为您要分配inputView
的{{1}}。
让我们调试您的代码。首先添加一堆UITextView
这样的语句。
NSLog
这将打印如下内容:
- (void)viewDidLoad
{
[super viewDidLoad];
self.textField.delegate = self;
NSLog(@"1 %@", NSStringFromCGRect(self.toolbar.frame));
self.textField.inputAccessoryView = self.toolbar;
NSLog(@"2 %@", NSStringFromCGRect(self.toolbar.frame));
self.textField.inputView = self.toolbar;
NSLog(@"3 %@", NSStringFromCGRect(self.toolbar.frame));
[self.toolbar removeFromSuperview];
NSLog(@"4 %@", NSStringFromCGRect(self.toolbar.frame));
[self.textField becomeFirstResponder];
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
NSLog(@"5 %@", NSStringFromCGRect(self.toolbar.frame));
self.textField.inputAccessoryView = self.toolbar;
NSLog(@"6 %@", NSStringFromCGRect(self.toolbar.frame));
}
所以,我们发现,不知何故,你的酒吧高度变为0.而且,老实说我不知道为什么,但让我们继续我们的调试。
正如@jammycoder指出的那样,不需要2015-05-14 00:13:46.313 ToolbarKeyboard[8367:4583306] 1 {{0, 524}, {320, 44}}
2015-05-14 00:13:46.314 ToolbarKeyboard[8367:4583306] 2 {{0, 524}, {320, 44}}
2015-05-14 00:13:46.314 ToolbarKeyboard[8367:4583306] 3 {{0, 524}, {320, 44}}
2015-05-14 00:13:46.315 ToolbarKeyboard[8367:4583306] 4 {{0, 524}, {320, 44}}
2015-05-14 00:13:46.491 ToolbarKeyboard[8367:4583306] 5 {{0, 0}, {320, 0}}
2015-05-14 00:13:46.491 ToolbarKeyboard[8367:4583306] 6 {{0, 0}, {320, 0}}
的{{1}},如果你想要一个自定义键盘,你只需要这样做。所以让我们改变我们的代码:
inputView
这将打印出工具栏的高度保持不变。工具栏显示在键盘上方。
直到这里我使用真实设备进行调试,决定使用模拟器。等等,那里没有打开键盘!它似乎是Xcode 6的一个新的功能,所以我做了一个快速搜索并找到了这个stackoverflow:Xcode 6: Keyboard does not show up in simulator在最投票的答案中说了什么,一切都运行得很好
所以,简而言之。以下最小代码将产生所需的行为。如果您使用模拟器进行测试/调试,请确保执行此处所述的操作:https://stackoverflow.com/a/24497773/3927536
UITextView
答案 1 :(得分:0)
此行显示键盘
[self.textField becomeFirstResponder];
当文本字段成为第一响应者时,它会自动调出键盘。
修改:删除以下行
self.textField.inputView = self.toolbar;
您只需将工具栏设置为inputAccessoryView
Edit2 :同时删除此行
[self.toolbar removeFromSuperview];