UITextView: move view when keyboard appears
For showing the textview fields without being hidden by the keyboard, the standard way is to move up/down the view having text fields whenever the keyboard is shown.
The following simple steps is used to move up/down the UITextField in your iPhone.
Step 1: Set the UITextViewDelegate, and tag the textViewFields (in your .h file)
Step 2: Place "CGFloat animatedDistance;" in to inside the interface (in your .h file)
Step 3: Define the following values in top of your .m file (after @implimentation)
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2;
static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8;
static const CGFloat PORTRAIT_KEYBOARD_HEIGHT = 216;
static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 162;
Step 4: And finally add the following code into your .m file
-(void) textViewDidBeginEditing:(UITextView *)textView {
CGRect textFieldRect = [self.view.window convertRect:textView.bounds fromView:textView];
CGRect viewRect = [self.view.window convertRect:self.view.bounds fromView:self.view];
CGFloat midline = textFieldRect.origin.y + 0.5 * textFieldRect.size.height;
CGFloat numerator = midline - viewRect.origin.y - MINIMUM_SCROLL_FRACTION * viewRect.size.height;
CGFloat denominator = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * viewRect.size.height;
CGFloat heightFraction = numerator / denominator;
if(heightFraction < 0.0){
heightFraction = 0.0;
}else if(heightFraction > 1.0){
heightFraction = 1.0;
}
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if(orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown){
animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
}else{
animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
}
CGRect viewFrame = self.view.frame;
viewFrame.origin.y -= animatedDistance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
}
- (void)textViewDidEndEditing:(UITextView *)textView{
CGRect viewFrame = self.view.frame;
viewFrame.origin.y += animatedDistance;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:KEYBOARD_ANIMATION_DURATION];
[self.view setFrame:viewFrame];
[UIView commitAnimations];
}
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
iphone - How to dismiss keyboard for UITextView with return key:
Did you saw the last para of the above code snippets?, that is used to hide the iphone keypad when clicking return key.
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
分享到:
相关推荐
在iOS开发中,`UITextView` 是一个非常重要的控件,用于显示和编辑多行文本。这个控件在很多场景下都有广泛的应用,比如输入备注、编辑日记等。本示例(Demo)主要关注如何对`UITextView`进行深度定制,特别是关于...
`UITextView`是iOS开发中一个非常重要的组件,主要用于显示和编辑多行文本。它在用户界面设计中扮演着文本输入和展示的核心角色,适用于创建日记应用、文本编辑器、评论输入框等场景。在本篇文章中,我们将深入探讨`...
在Storyboard中,从Object Library拖拽`UITextView`到View上,然后可以调整大小和位置。通过代码创建时,可以使用`init(frame:)` 或 `init coder:` 初始化方法。 2. **属性设置**: - `text`: 设置或获取显示的...
在iOS开发中,`UITextView` 是一个常用的用于显示和编辑多行文本的视图,但默认情况下,它并未提供直接限制用户输入字数的功能。为了实现这一需求,开发者需要自定义并封装一个功能,使得`UITextView`可以根据设定的...
在iOS开发中,`UITextField`和`UITextView`是两种常用的文本输入控件。`UITextField`通常用于单行文本输入,而`UITextView`则适用于多行文本输入。然而,在某些场景下,开发者可能希望`UITextView`具备`UITextField`...
2. UITextView:这个控件可以显示多行文本,允许用户进行阅读但不允许编辑。在详细页面中,UITextView常用来展示详细的产品描述、文章内容或者用户评论。它支持字体样式、颜色和段落格式设置,使文本呈现更加美观和...
在iOS应用开发中,`UITextView` 是一个用于展示多行可编辑文本的视图,它支持用户输入、格式化和编辑文本。本教程将详细讲解如何使用Swift对`UITextView`进行简单封装,以便更好地适应项目的特定需求,提高代码复用...
在iOS开发中,当用户需要在`UITextView`中输入文本时,键盘的弹出可能会遮挡到`UITextView`,导致用户无法看到正在输入的内容。这个问题在许多应用中都会遇到,尤其是那些需要大量文字输入的场景。为了解决这个问题...
在iOS开发中,`UITextView` 是一个非常重要的控件,它允许用户输入和显示多行文本。在本文中,我们将深入探讨`UITextView`的相关知识点,包括它的基本使用、属性、方法、以及如何自定义和优化其行为。 1. **基本...
使用UITextView来实现富文本编辑,实现:添加标题、加粗、斜体、下划线、删除线、图片等功能。UITextView富文本编辑主要通过NSMutableAttributedString和NSAttributedString进行属性设置,主要是计算好NSRange参数...
在iOS开发中,`UITextView` 是一个常用的组件,用于展示多行文本输入。然而,原生的`UITextView`并没有内置的placeholder功能,即默认的提示文本,这对于用户交互和界面设计来说是一个不便之处。为了解决这个问题,...
在Swift编程中,`UITextView` 是一个非常重要的视图组件,它允许用户输入多行文本,常用于创建笔记、评论或长篇文章等场景。在实际应用中,我们经常需要为`UITextView`添加提示性文字,即所谓的“占位符”...
我们都知道iOS开发中的UITextField有个placeholder属性,placeholder可以很方便引导用户输入。但是UITextView却没有placeholder属性。 一、猥琐的方法 ...1.创建UITextView: 代码如下: UITextView *textViewPla
在iOS开发中,`UITextView`是一个非常重要的控件,用于显示和编辑多行文本。在某些场景下,我们可能需要在`UITextView`中插入图片或者表情,以实现图文混排的效果。这个"ios-UITextView中插入图片.zip"文件提供了一...
在iOS开发中,`UITextView` 是一个常用的控件,用于显示多行可编辑的文本。然而,原生的`UITextView`并没有提供占位符(placeholder)功能,就像`UITextField`那样。开发者通常需要自己实现这个功能,这可能涉及到...
MyInputMethod MyInputMethod,我的输入法... ##参考 技术参考: iOS基础集合类: iOS-Core-Animation-Advanced-Techniques: 自定义控件: How To Make a Custom ...Undo typing in UITextView: Undo/redo with a UIText
在iOS开发中,`UITextView` 是一个常用的组件,用于显示多行文本输入或阅读。在许多场景下,我们希望给 `UITextView` 添加类似 `UITextField` 的占位符(placeholder)功能,来提示用户输入内容。标题 "UITextView...
带有palceholder的UITextView,只需引入LYTextView,然后进行调用即可,可以纯代码引入,也可以在XIB中引入,Demo中都有实例。 可以设定palceholder的4个参数,文字,字体,颜色,高度 改代码也可以自己修改满足自己...
在Swift开发中,UI设计是不可或缺的一部分,而`UITextView`是用于展示和编辑多行文本的常见控件。在实际应用中,我们往往需要对其进行一些定制化处理以满足特定需求。标题“swift-UITextView的封装可以自定义...