1

我正在开发 iOS 应用程序,在其中一个视图中,我必须加载用户评论并让他们发表评论。一切看起来都很好,直到用户点击文本字段以输入评论时出现键盘。UIView 上的文本与文本字段重叠,如下所示。

在此处输入图像描述

谢谢你看看。

4

4 回答 4

4

在 iOS 中,习惯上将启用键盘的视图中的所有视图元素添加到 UIScrollView 中。这样,当键盘向上滑动时 - 其他元素也会随之向上滑动以避免被阻挡。

幸运的是,有人实现了一个 UIScrollView 自动避开键盘,所以你只需要将你的视图元素插入其中之一,一切都应该正常工作。

https://github.com/michaeltyson/TPKeyboardAvoiding

于 2013-05-31T22:26:11.083 回答
1

假设当用户点击 textField 时 UITextField 和 UIButton("Post") 向上移动,您应该同时将其上方的所有其他内容移动相同的距离。

于 2013-05-31T22:21:37.607 回答
1

屏幕上不仅仅是一点点文本,您将不得不使用 UIScrollView。然后,您可以使用[self.scrollView setContentOffset:CGPointMake(0, offset) animated:YES];相对于键盘向上(或向下)移动文本。

于 2013-05-31T23:07:31.313 回答
0

用于inputAccessoryView您的发布按钮和UITextField。像这样:

-(void)addAccessoryViewOnTextView
{
    UIToolbar *keyboardHeaderView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 1024, 39)];

    keyboardHeaderView.tintColor = [UIColor blackColor];

    /* Here use your post button and textfield.
    UIBarButtonItem *nextBtn= [[UIBarButtonItem alloc]initWithTitle:@"Next" style:UIBarButtonItemStyleDone target:self action:@selector(nextEvent:)];
     UIBarButtonItem *prevBtn= [[UIBarButtonItem alloc]initWithTitle:@"Previous" style:UIBarButtonItemStyleDone target:self action:@selector(prevEvent:)];
    UIBarButtonItem *doneBtn= [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneEvent:)];*/

    UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [keyboardHeaderView setItems:[NSArray arrayWithObjects: doneBtn,flexibleSpace,prevBtn, nextBtn, nil]];

    [yourTextField setInputAccessoryView:keyboardHeaderView];
    keyboardHeaderView = nil;

}

viewDidLoad并在您UITextField初始化的地方或任何地方调用此方法。

于 2013-06-01T03:48:57.157 回答