我有UITextField
(密码字段),有时需要多次触摸才能显示键盘。这似乎只有在您点击占位符文本的位置时才会发生。这是一个视图层次结构的镜头,对我来说似乎没问题。
任何想法还有什么可以找到,所以我可以弄清楚为什么会这样?
修改
所以我弄清楚问题是什么,它是下一段代码中的leftView
:
UIView *pwPaddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 38)];
self.passwordField.leftView = pwPaddingView;
self.passwordField.leftViewMode = UITextFieldViewModeAlways;
这似乎可以防止接触“密码”的前三个字符。它的原因是填充场的左侧,所以单词没有正对着左边缘。我还有哪些替代方法可以检测触摸或以不同的方式填充场?
答案 0 :(得分:1)
您是否将其设置为不取消视图中的其他触摸?
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
tap.cancelsTouchesInView = NO; //add this line
[self.view addGestureRecognizer:tap];
答案 1 :(得分:1)
创建UITextField
的子类,并在故事板中将密码字段设置为此类。在新类中覆盖以下方法,如此
// placeholder position
- (CGRect)textRectForBounds:(CGRect)bounds {
return CGRectInset( bounds , 10 , 0 );
}
// text position
- (CGRect)editingRectForBounds:(CGRect)bounds {
return CGRectInset( bounds , 10 , 0 );
}
并从viewController代码中删除以下代码:
UIView *pwPaddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 38)];
self.passwordField.leftView = pwPaddingView;
self.passwordField.leftViewMode = UITextFieldViewModeAlways;
这会填充细胞,但不会阻止触摸检测
答案 2 :(得分:1)
要停止左侧视图吞下点击事件,您可以在视图上将userInteractionEnabled设置为NO,例如
UIView *pwPaddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 38)];
pwPaddingView.userInteractionEnabled = NO;
self.passwordField.leftView = pwPaddingView;
self.passwordField.leftViewMode = UITextFieldViewModeAlways;
答案 3 :(得分:0)
致电
在我的带有UITextField的ViewController中的[self resignFirstResponder]
有助于解决定期的无响应接触