Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >UIScrollView中UITextView中的键盘方向

UIScrollView中UITextView中的键盘方向
EN

Stack Overflow用户
提问于 2012-09-14 11:22:25
回答 3查看 319关注 0票数 0

在我的应用程序中,我使用了一个具有UITextFieldUITextViewUIScrollView,我用UITextField编写了键盘方向的代码。它工作正常,但对UITextView不起作用。在UITextView中编辑时,键盘完全隐藏了UITextView。以下是我的代码

代码语言:javascript
代码运行次数:0
复制
- (void)textFieldDidBeginEditing:(UITextField *)textField {
  [textField setClearButtonMode:UITextFieldViewModeWhileEditing];
  CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField];
  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)textFieldDidEndEditing:(UITextField *)textField {
  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];    
}

有人能帮我清理一下吗?

EN

回答 3

Stack Overflow用户

发布于 2012-09-14 11:32:12

为UITextview使用textview的委托方法,如下所示

代码语言:javascript
代码运行次数:0
复制
-(void)textViewDidBeginEditing:(UITextView *)textView;

而且还

代码语言:javascript
代码运行次数:0
复制
-(void)textViewDidEndEditing:(UITextView *)textView;

与textField委托方法相同

例如..。

代码语言:javascript
代码运行次数:0
复制
-(void)textViewDidBeginEditing:(UITextView *)textView{

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    self.view.frame=CGRectMake(0, -100, 320, 460);//just for an example
    [UIView commitAnimations];

}

-(void)textViewDidEndEditing:(UITextView *)textView{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    self.view.frame=CGRectMake(0,0, 320, 460);
    [UIView commitAnimations];
}

希望这对你有帮助..

:)

票数 1
EN

Stack Overflow用户

发布于 2012-09-14 11:30:51

您可以尝试从以下网址获得的强烈推荐的"TPKeyboardAvoidingScrollView“:TPKeyboardAvoiding

票数 0
EN

Stack Overflow用户

发布于 2012-09-14 12:00:37

首先在'.h‘文件中添加

在did加载中

代码语言:javascript
代码运行次数:0
复制
textView.delegate=self;

然后给出了textView的代码

代码语言:javascript
代码运行次数:0
复制
textView.userinteractionEnabled=YES;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12423516

复制
相关文章
在Python中进行运行时类型检查
Python 是一门动态类型语言,没有编译器对变量类型正确性的检查与保证,这也意味着经常需要在运行时对变量的类型进行校验,尤其是在后端接口开发中,毕竟前端传入的数据往往是不可控的。
杜逸先
2023/05/12
7470
PHP脚本运行时间:
作者:陈业贵 华为云享专家 51cto(专家博主 明日之星 TOP红人) 阿里云专家博主 文章目录 代码: 效果: ---- 代码: <style> body{ background:#ccc;
贵哥的编程之路
2022/09/23
1.5K0
PHP脚本运行时间:
运行命令出现错误 /bin/bash^M: bad interpreter: No such file or directory
-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory
HoneyMoose
2023/08/28
7140
运行命令出现错误 /bin/bash^M: bad interpreter: No such file or directory
AQS中的cancelAcquire何时会运行
哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。
子牙老师
2022/05/11
4960
AQS中的cancelAcquire何时会运行
Archiva 运行时提示 JAXBException 错误
你可以尝试使用 Archiva 自己进行编译,或者部署到 1.8 的 JDK 版本上,或者等到 Archiva 3.0 的版本后再开始用吧。
HoneyMoose
2022/06/14
6050
Archiva 运行时提示 JAXBException 错误
cmake:在Makefile中运行ant脚本
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51832822
10km
2019/05/25
1.7K0
ReactNative_在终端terminal运行程序经常出现的问题
1、Unable to resolve modules lodash  (这里举例lodash,这个lodash也可以是别的。意思就是缺少当前模块,所以需要安装)
mikimo
2022/07/20
7260
检查高 CPU 进程在 Linux 上运行时间的脚本
给 long-running-cpu-proc.sh 设置可执行的 Linux 文件权限。
用户4988085
2021/09/15
2.1K0
解决"QWindowsContext: OleInitialize() failed"运行时错误
OleInitialize是一个Windows API函数。它的作用是在当前单元(apartment)初始化组件对象模型(COM)库,应用程序必须在调用COM库函数之前初始化COM库。每个线程不能初始化多次。
Qt君
2019/11/04
2.7K0
tensorflow gpu 运行出现OOM错误
0 问题 今天跑了一下程序,报了如下的OOM错误 ResourceExhaustedError: OOM when allocating tensor with shape[258000,768] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc [[{{node rpn_model/rpn_conv_shared/convolution}} = Conv2D[T=DT_FLOAT,
莫斯
2020/09/09
5.6K0
什么是编译错误,运行时错误及逻辑错误?
程序的错误主要分成三种: 编译链接错误(语法错误); 编译链接错误又分成编译错和链接错。 编译错就是普通意义上的语法错,编译器进行语法检查不通过,也就是程序违背了计算机语言的语法,例如:括号不匹配、变量名拼写错误、用保留字定义变量名等; 链接错是指程序通过了语法检查,但是无法生成可执行文件,最常见的是链接找不到lib库。初学者有时写了函数的声明,但是缺少函数的定义,此时就会出现链接错。 运行错误; 运行错是程序可以执行,但是在执行过程中发生异常,提前退出程序。最常见的是指针越界,打开文件失败
用户1148881
2018/01/16
9.4K0
Python 运行时遇到的这些错误
对于刚入门的Python新手,在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了在Python运行中常见的错误,希望能够帮助到大家。
小小科
2020/07/15
1K0
解决Clion中多个cpp文件运行时出现multiple definition of `main'
在最初使用Clion这款软件做C++开发时,有时会遇到在同一个Project中有多个cpp文件,而每个cpp文件又都有main函数,因此运行时会出现multiple definition of `main'这样的错误。
志颖
2019/03/17
4K0
在linux后台运行脚本的方法和命令
后台运行脚本 执行脚本test.sh:./test.sh 中断脚本test.sh:ctrl+c 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid) 直接在后台运行脚本test.sh:./test.sh & 查看当前shell环境中已启动的任务情况:jobs 将test.sh切换到前台运行:fg %number(”number”为使用jobs命令查看到的 [ ] 中的数字,不是pid) 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number 以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。
大数据流动
2020/06/19
3.6K0
获取程序运行时间 - Linux Shell 脚本
下面的脚本可以获取一段程序的运行时间: #!/bin/bash start=$(date +%s) sleep 5; end=$(date +%s) take=$(( end - start )) echo Time taken to execute commands is ${take} seconds. 其中: date +%s获取当前的纪元时(Unix时间),即自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。 sleep 5使程序延时5秒钟。 take=$(( end - s
mwangblog
2019/06/03
17K0
[新手必看] 17个常见的Python运行时错误
对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲。随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了常见的17个错误,希望能够帮助到大家。
龙哥
2019/11/11
1.1K0
pycharm运行时报configuration错误「建议收藏」
错误原因是该项目未配置正确的python解释器。在file setting中找到解释器位置
全栈程序员站长
2022/09/26
1.4K0
pycharm运行时报configuration错误「建议收藏」
17个新手常见 Python 运行时错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在类似如下代码中: if spam == 42 print('Hello!') 2)使用 = 而不是 ==(导致“SyntaxError: invalid syntax
Crossin先生
2018/04/16
1.2K0
17个新手常见Python运行时错误
企鹅号小编
2017/12/28
1.4K0
17个新手常见Python运行时错误
17个新手常见Python运行时错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。
bear_fish
2018/09/20
8390

相似问题

Python脚本在终端中正确运行时,通过crontab运行时会出现错误。

16

为什么在执行立即命令时会出现运行时错误?

12

Perl脚本在linux终端运行,但浏览器出现错误

31

Python脚本在作为ubuntu服务运行时会出现错误。

25

Python脚本在Jenkins运行时会出现语法错误

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文