在我的登录视图中,我在具有两个单元格的分组表格视图中有电子邮件和密码文本字段。 我以编程方式添加了两个文本字段:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
_cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
_cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell"];
_cell.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
if (indexPath.row == 0) {
_emailTxtFld = [[UITextField alloc]initWithFrame:CGRectMake(10, 7, 277, 34)];
_emailTxtFld.placeholder = @"E-mail";
_emailTxtFld.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
_emailTxtFld.clearsOnBeginEditing = YES;
[_emailTxtFld setDelegate:self];
[_emailTxtFld setKeyboardType:UIKeyboardTypeEmailAddress];
[_cell.contentView addSubview:_emailTxtFld];
}
if (indexPath.row == 1) {
_passwordTxtFld = [[UITextField alloc]initWithFrame:CGRectMake(10, 7, 277, 34)];
_passwordTxtFld.placeholder = @"Password";
_passwordTxtFld.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
_passwordTxtFld.secureTextEntry = YES;
[_passwordTxtFld setDelegate:self];
_passwordTxtFld.clearsOnBeginEditing = YES;
[_cell.contentView addSubview:_passwordTxtFld];
}
return _cell;
}
这一切都在滚动视图上。 触摸文本字段时,键盘将出现,滚动视图显示视图的其余部分可通过滚动查看。 问题是文本字段和表格视图以及我键入的文本消失了,当我触摸它们内部进行编辑时。 我仍然可以看到自动更正,在我键入某些内容并且键盘返回后,一切都恢复正常,我可以看到我输入的文本。
如果我注释掉键盘DidShow Method中的所有内容,则表视图和文本字段不会消失。 但显然我想保持这条线。
-(void)keyboardDidShow:(NSNotification *)notif
{
_logScrollView.frame = CGRectMake(0, 0, 320, 245);// This line commented out stops the problem
}
-(void)keyboardDidHide:(NSNotification *)notif
{
_logScrollView.frame = CGRectMake(0, 0, 320, 460);
}
如果我需要给你更多的代码,请告诉我。感谢您的回答!
滚动视图中有表格视图吗?UITableView已经是UIScrollView的子类。你不应该有一个在另一个里面。
另一件事:你有这个:
_emailTxtFld.clearsOnBeginEditing = YES;
和
_passwordTxtFld.clearsOnBeginEditing = YES;
这意味着一旦文本字段成为第一个响应者,它们就会清除。我真的不明白键盘关闭后发生了什么。你能详细说明一下正在消失的东西吗?
我找到了解决问题的方法。 我不知道正确的措辞,但我刚刚从我已经在 IB 中创建的表格视图中创建了一个变量,在 keyboardDidShow 方法中,我使框架停留在如下所示的位置:
-(void)keyboardDidShow:(NSNotification *)notif
{
_logScrollView.frame = CGRectMake(0, 0, 320, 245);
_tableViewWTxtFlds.frame = CGRectMake(8, 153, 304, 79);
}
-(void)keyboardDidHide:(NSNotification *)notif
{
_logScrollView.frame = CGRectMake(0, 0, 320, 460);
_tableViewWTxtFlds.frame = CGRectMake(8, 153, 304, 79);
}
显然,表格视图正在移出我的视野,这就是我猜测如果这修复它是错误的。 感谢您查看我的问题。