UIScrollView,键盘可见

时间:2015-03-21 15:35:35

标签: ios uiscrollview uitextview

我有UITextView(也是UIScrollView),其中包含一堆文字。在屏幕截图中,键盘下面有更多文本 。我无法向上滚动以查看该文本 - 无论我做什么,该文本仍保留在键盘下方。

如何修复内容以便我可以滚动查看所有文本?

enter image description here

3 个答案:

答案 0 :(得分:3)

这很有效,而且非常简单。

在.h

@property (weak, nonatomic) IBOutlet UITextView *tv;
@property CGSize keyboardSize;

在.m

- (void)viewDidLoad {
[super viewDidLoad];

// Register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

- (void) keyboardWillShow: (NSNotification*) aNotification {

// Get the keyboard size from the notification userInfo
NSDictionary *info = [aNotification userInfo];
self.keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

// Adjust the content inset from the bottom by the keyboard's height
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 0, self.keyboardSize.height, 0);
self.tv.contentInset = contentInsets;
}

- (void) keyboardWillHide: (NSNotification*) aNotification {

// Reset the content inset when the keyboard is dismissed
self.tv.contentInset = UIEdgeInsetsZero;
}

答案 1 :(得分:1)

scrollView有一个名为contentSize的属性,用于确定用户可以滚动的区域。您必须手动更改此值以补偿由键盘引起的额外滚动空间。

我建议注册通知UIKeyboardWillHideNotification UIKeyboardWillShowNotification

当键盘即将显示时,会触发UIKeyboardWillShowNotification通知,并在相应的方法中将键盘高度添加到滚动contentSize高度。

同样,从contentSize通知中的滚动UIKeyboardWillHideNotification高度中扣除此高度。

希望这有帮助! :)

答案 2 :(得分:1)

为了避免所有手动调整大小和内容,我建议使用这个很棒的库 - https://github.com/hackiftekhar/IQKeyboardManager。它将为您完成所有艰苦的工作。