- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 UIViewController
中有一个 UITableView
。当我开始在 UITableView
中搜索时,一些行显示在键盘下方。
我应该怎么做才能让所有这些都可见?需要设置任何 layoutIfNeeded() 或其他东西吗?
提前致谢,祝您有美好的一天!
最佳答案
如果您可以直接使用 UITableViewController
,那么这将是首选方法,因为它会自动避免键盘输入。
如果这不可能,您将不得不自己实现。这样的事情应该有效:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
}
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
func keyboardWillShow(notification: NSNotification) {
let keyboardSize = (notification.userInfo![UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue().size
let rate = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! NSNumber
var contentInsets = UIEdgeInsetsZero
if UIInterfaceOrientationIsPortrait(UIApplication.sharedApplication().statusBarOrientation) {
contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0)
} else {
contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.width, 0.0)
}
UIView.animateWithDuration(rate.doubleValue) {
self.tableView.contentInset = contentInsets
self.tableView.scrollIndicatorInsets = contentInsets
}
tableView.scrollToRowAtIndexPath(self.editingIndexPath, atScrollPosition: UITableViewScrollPosition.Top, animated: true)
}
func keyboardWillHide(notification: NSNotification) {
let rate = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! NSNumber
UIView.animateWithDuration(rate.doubleValue) {
self.tableView.contentInset = UIEdgeInsetsZero
self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero
}
}
由 Brandon King 由我自己从原始 Objective-C 代码移植而来:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void)keyboardWillShow:(NSNotification *)notification
{
CGSize keyboardSize = [notification.userInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
NSNumber *rate = notification.userInfo[UIKeyboardAnimationDurationUserInfoKey];
UIEdgeInsets contentInsets;
if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
contentInsets = UIEdgeInsetsMake(0.0, 0.0, (keyboardSize.height), 0.0);
} else {
contentInsets = UIEdgeInsetsMake(0.0, 0.0, (keyboardSize.width), 0.0);
}
[UIView animateWithDuration:rate.floatValue animations:^{
self.tableView.contentInset = contentInsets;
self.tableView.scrollIndicatorInsets = contentInsets;
}];
[self.tableView scrollToRowAtIndexPath:self.editingIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
- (void)keyboardWillHide:(NSNotification *)notification
{
NSNumber *rate = notification.userInfo[UIKeyboardAnimationDurationUserInfoKey];
[UIView animateWithDuration:rate.floatValue animations:^{
self.tableView.contentInset = UIEdgeInsetsZero;
self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero;
}];
}
关于iOS swift : UITableView KeyPad overlay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137758/
我想重新映射启用 Numlock 的数字小键盘,使其表现得像关闭 Numlock 的数字小键盘,包括能够在按住 Shift/Ctrl 的情况下扩展选择范围。 我遇到的问题如下 Numpad8::Up
我正在编写一个 Java 应用程序,该应用程序将有一个可用于触摸输入的屏幕数字键盘。普通的按键输入也将可用,但我想要平板电脑等的键盘。我创建了一个扩展 JPanel 的类。它有 10 个按正常键盘配置
我只想显示一个带有以下数字和字符的 kepyad:*0123456789# ,但是当我使用 accessCodeEditText.setInputType(InputType.TYPE_CLASS_P
我正在开发 Kiosk 触摸屏应用程序并使用 JQuery.keypad 插件,并注意到一些主要的性能问题。如果您快速连续单击多个按钮,CPU 就会被锁定,按钮的点击速度会跟不上点击的速度,有些按钮的
我不确定这是我放置主要空间的地方还是什么?我的程序编译没有任何错误,但是当我在 TextPad 中运行该应用程序时,它只是告诉我“按任意键继续”......然后什么也不做 import java.aw
我遇到 jQuery Keypad/Primefaces 键盘问题 - 我尝试重新映射默认空格键按钮以输入十六进制值“32”而不是“160”。因为当我从物理键盘输入“空格”时,它给出的值 (32) 与
在我的应用程序中,我使用相对布局对齐了 7 个按钮。我显示按钮的顺序如下, one Two Three Four Five Five Six 在上面的布局中
我在 UIViewController 中有一个 UITableView。当我开始在 UITableView 中搜索时,一些行显示在键盘下方。 我应该怎么做才能让所有这些都可见?需要设置任何 layo
是否可以通过编程方式按下键盘,以便在屏幕上显示所按下的键的数字?请参阅下面的屏幕截图以获取更多解释: 详情: 诺基亚 N70 CLDC 1.1 MIDP 2.0 最佳答案 您如何处理它取决于您想要实现
我一直在使用 Phonegap 为 Android 开发移动应用程序。我在使用屏幕 DPI 和键盘显示 时遇到困难。 如何在不同屏幕分辨率下使用不同 dpi 的图像?我希望屏幕在键盘出现时滚动。 我使
我是 PIC 微 Controller 和 C 编程的新手,我的任务是创建我自己的键盘扫描方法,该方法专门用于端口 C(16F877A 微 Controller )。具体来说,使用此方法的程序仅使用数
我是一名优秀的程序员,十分优秀!