我的代码在iOS 6下运行正常,但在iOS 7下我似乎无法使我的UITextView设备屏幕的高度减去键盘(换句话说,当键盘启动时,让UITextView仍然是全屏,但是不要去键盘下面).

首先,当我将UITextView放入我的视图控制器(嵌入在导航控制器中)时,它也必须位于导航栏下,否则它会开始太远.

从那里我尝试了所有这些例子:

self.textView.contentInset = UIEdgeInsetsMake(0,230,0);
self.textView.scrollIndicatorInsets = UIEdgeInsetsMake(0,0);
self.textView.textContainerInset = UIEdgeInsetsMake(0,0);

每个键盘的位置仍然会在某些点上超过textview.我也试过设置一个高度约束并操纵常量,但没有运气.

self.height.constant = self.height.constant - 240.0;

(高度是约束的出口.)

这些都是在[self.textField becomeFirstResponder]之前和之后尝试过的;呼叫.

我怎么做到这一点?我只想要一个全屏UITextView,其中插入的东西不会出现在键盘下,但它在iOS 7下看起来很疯狂.

解决方法

在iOS7之前执行此操作的“正确”方法一直是在键盘显示或隐藏时调整UITextView(UIScrollView子类)的contentInset属性.我没有亲自调查,但这似乎在iOS7中不能正常工作,因为底部插图要么没有兑现,要么光标仍然在键盘下面有一些问题. See this question for reference.

在您使用自动布局的情况下,您想要的只是一个“全屏”文本视图,您可以在键盘显示或隐藏时简单地调整单个约束.这将调整文本视图的高度:

@implementation TSViewController
{
    IBOutlet NSLayoutConstraint* _textViewSpacetoBottomConstraint;
}

- (void) dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver: self];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[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*) n
{
    NSValue* bv = n.userInfo[UIKeyboardFrameEndUserInfoKey];
    CGRect br = [bv CGRectValue];

    _textViewSpacetoBottomConstraint.constant = br.size.height;
}

- (void) keyboardWillHide: (NSNotification*) n
{
    _textViewSpacetoBottomConstraint.constant = 0;
}

@end

在故事板中,将UITextView放在视图控制器视图上,并添加4个约束,将其边缘粘贴到视图控制器视图的边缘.将底部空间约束连接到视图控制器中的IBOutlet _textViewSpacetoBottomConstraint.

您可以稍微玩一下并调整动画块内的大小,从键盘通知中借用动画时间和曲线.

我有兴趣看到一个设置contentInset的版本并使其正常工作……

编辑

Here is another SO question that covers this topic,with a solution.显然,插入符号(光标)出现问题的问题与我上面提到的问题相同. “正确”的方法,这是设置contentInset属性.因此,对此问题的修复应该使您能够简单地调整contentInset与更改文本视图框架(通过.frame或通过约束).

编辑2

最后一想到这一点.在iOS7中,键盘是半透明的.用户应该能够看到键盘后面的内容.通过将UITextView的大小调整为位于键盘上方,这种情况永远不会发生.所以“正确”的解决方案仍然是调整文本视图底部的contentInset,将键盘的高度添加到文本视图的可滚动区域.然后,在理想的世界中,您将调整文本视图的contentOffset,以便在键盘出现时将插入符号保持在视图中.最后,添加“修复”以在显示但是用户输入换行符时将插入符号保持在键盘上方的位置.

如何让我的UITextView在iOS 7下的屏幕高度减去键盘?的更多相关文章

  1. ios – Reactive Cocoa – 以编程方式设置文本时不会调用UITextView的rac_textSignal

    我正在实现一个聊天UI,并使用ReactiveCocoa根据用户的类型调整聊天气泡的大小.目前,我正在基于textview的rac_textSignal更新UI的布局.一切都很好–除了一点:当用户发送消息时,我以编程方式清除文本字段:…我是否需要拥有一个持有currentTypedString的Nsstring,并在该字符串更新时驱动UI更改?

  2. 如何让我的UITextView在iOS 7下的屏幕高度减去键盘?

    我的代码在iOS6下运行正常,但在iOS7下我似乎无法使我的UITextView设备屏幕的高度减去键盘(换句话说,当键盘启动时,让UITextView仍然是全屏,但是不要去键盘下面).首先,当我将UITextView放入我的视图控制器(嵌入在导航控制器中)时,它也必须位于导航栏下,否则它会开始太远.从那里我尝试了所有这些例子:每个键盘的位置仍然会在某些点上超过textview.我也试过设置一个高度

  3. iOS – UIToolBar作为UITextView的inputAccessoryView

    这是我的代码:解决方法如果工具栏中没有其他附近的按钮,工具栏似乎会将按钮的活动区域扩展到其边界之外.Apple工程师必须认为最好是猜测用户打算按哪个而不是根本不做出反应.

  4. ios – colorWithPatternImage在io6中不起作用?

    我正在使用colorWithPatternImage来更改UITextView的文本颜色.它在IO7中工作正常,但在IO6中不起作用.这是我的代码:–解决方法UITextView的内部在iOS6和7之间发生了巨大的变化.在iOS7之前,UITextView不支持文本颜色的图案颜色.有几个组件在iOS7中获得了对图案颜色的支持,而UITextView就是其中之一.

  5. UITextView startInteractionWithLinkAtPoint仅崩溃iOS 11

    因此,当用户与URL链接进行交互时,我在UItextview中遇到崩溃.所有崩溃报告仅限iOS版本11.这看起来像iOS9中众所周知的bug,但是没有单个报告iOS版本低于11,而且在报告中我发现有趣的行:iOS11(http://developer.limneos.net/?ios=11.0&framework=UIKit.framework&header=UITextGestureCluste

  6. ios – Swift,移动键盘后面的内容在关闭后不会重置

    我在我的一个VC中有一个uiscrollview.在scrollView中,我有多个TF,按钮等.我使用下面的代码,根据Apple文档,在调用键盘通知时向上移动scrollView,以推高隐藏的文本字段.但是,当我关闭键盘时,scrollView不会重置或向下移动,它只是停留在“向上移动”的位置.我在这里错过了什么吗?我有一个名为的类的成员变量:我是否正确使用了委托方法?解决方法我这样做了,它对我有用.似乎比你的方式容易多了.我为我的项目使用了UITextView.但它应该与UITextField一样.–

  7. ios – Xcode 7 – 有些segues不再工作了

    如果确实如此,那么Xcode7/iOS9中存在一个错误,如果您在storyboard中设置了默认文本值,则无法启动包含UITextView的模式.解决方法是确保故事板中的UITextView为空白或具有默认的LoremIpsem值,而是在viewDidLoad上的代码中以编程方式设置文本.希望这个错误很快就会修复.

  8. ios – iPad上的UIModalPresentationFormSheet.键盘出现时如何调整UITextView高度

    UITextView是模态控制器视图的子视图.当键盘出现时,我需要降低UITextView高度,以便UITextView的底部边框y坐标等于键盘的顶部y坐标.我想要键盘高度问题是当键盘出现时,此模态视图会跳起来.在这种情况下如何计算键盘的顶部边框坐标?解决方法你可以这样做:请记得取消注册通知.

  9. ios7 – iOS 7 UITextView:重新打开应用程序后,nstextattachment的大小增加2倍

    如果是视网膜,您可能需要在存放前将尺寸缩小50%.试试这个怎么样:–

  10. ios – 在UITextView上替换属性文本时维护自定义属性

    我有一个可编辑的UITextView,它加载了一个属性String.此属性String加载了应用程序设置的自定义属性.出于这个原因,我总是将这些自定义属性添加到textView的typingAttributes中.每当我输入文本时它按预期工作,添加的文本都设置了自定义属性,但每当我使用预测性建议替换单词时,整个单词都设置为没有自定义属性.据我所知,每次以编程方式设置属性文本时,将自动清除typingAttributes.因此,当选择预测建议时,文本会以编程方式设置,因此我丢失了所有自定义属性.有没有办法解

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部