UITextfield:文本在键入时上下跳动

时间:2015-07-29 16:43:00

标签: ios objective-c xcode uitextfield

我遇到文本字段输入问题。在评论视图控制器'我有一个可滚动的tableview来显示以前的注释,底部是一个UItextField,供用户输入注释并发布。问题是:当我尝试键入文本字段并切换键盘时,文本会在我打字时上下跳动。例如,我输入的第一个字符在键盘上方,第二个字符在键盘下方和后方。有没有人知道原因?测试设备是64 GB itouch5,代码用目标C编写,我使用的是Xcode 6.3.2。

    <i>`- (void)keyboardWasShown:(NSNotification*)aNotification {
 NSDictionary* info = [aNotification userInfo]; 
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size; 
theKBSize = kbSize; 
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height - 10, 0.0); 
self.tvComment.contentInset = contentInsets; self.tvComment.scrollIndicatorInsets = contentInsets; 
CGRect uvFrame = _uvComment.frame; 
uvFrame.origin.y = self.view.frame.size.height - kbSize.height - _uvComment.frame.size.height; _uvComment.frame = uvFrame; } `</i>

    <i> `- (void)keyboardWillBeHidden:(NSNotification*)aNotification { 
UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
_tvComment.contentInset = contentInsets;
 _tvComment.scrollIndicatorInsets = contentInsets; 
}`</i>

    <i>`- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
if(string==nil || [string length]<1) { 
[self.btnSend setEnabled: NO];
 }else {
 [self.btnSend setEnabled: YES]; 
}
 return YES; 
}`</i> 

1 个答案:

答案 0 :(得分:1)

您是否正在更改tableView的滚动位置?

UITableView会自动滚动,以便在选中时键盘不会隐藏UITextField并弹出键盘。如果要更改滚动位置,则可能会干扰自动滚动行为。