我试图为我的用户提供一种关闭键盘的方法,无论是通过在键盘外部单击还是通过在键盘本身上设置一个 DONE 按钮。
我创建了一个完成按钮,它在 iOS 6 上运行良好:
UIToolbar *keyboardToolbar;
keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height - 44, 320, 44)];
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"dismiss_keyboard", nil) style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyboard)];
NSArray *items = [NSArray arrayWithObjects:flexItem,doneItem, nil];
[keyboardToolbar setItems:items animated:YES];
for (UIView *subview in [searchBar subviews])
{
if( [subview isKindOfClass:[UITextField class]] )
{
((UITextField*)subview).delegate=self;
((UITextField*)subview).inputAccessoryView = keyboardToolbar;
break;
}
}
但是在 iOS 7 上找不到这个按钮。
我还尝试使用用户可以单击键盘以外的任何位置并使其消失的方法:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
//Code to dismiss keyboard.
}
但是我的视图包含 aUISearchBar
和 aUITableView
但是touchesBegan
当我触摸它们时事件不会触发,只有当我触摸父 UIView 时才会触发,它不可见,因为它被 myUISearchBar
和 my覆盖UITableView
。我必须触摸两者之间的微小空间才能触发事件。
如何使我的touchesBegan
方法适用于屏幕上的任何对象?为什么我的 DONE 按钮没有在 iOS 7 中显示?