jer*_*use 9 iphone xcode objective-c keyboard-events ios
我想在用户按下UITextViewiphone 中的对象返回时隐藏键盘.然而,神秘的是,这不适用于UITextView工作UITextField.我无法弄清楚为什么......
这就是我做的:
1)我在XCode4中创建了一个基于视图的应用程序.
2)在.xib中创建UITextView,UITextField和UIButton对象
3)在Outlets中标记两者UITextField并UITextView委托给File的所有者
4)<UITextFieldDelegate>在.h中添加到@interface UIViewController
5)textFieldShouldReturn在.m中添加了功能
以下是代码:
.h文件
@interface keyboardDisappearViewController : UIViewController <UITextFieldDelegate>
{
UITextView *textBoxLarge;
UITextField *textBoxLittle;
}
@property (nonatomic, retain) IBOutlet UITextView *textBoxLarge;
@property (nonatomic, retain) IBOutlet UITextField *textBoxLittle;
- (IBAction)doSomething:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件
- (BOOL) textFieldShouldReturn:(UITextField *)theTextField
{
NSLog(@"textFieldShouldReturn Fired :)");
[textBoxLarge resignFirstResponder];
[textBoxLittle resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,在textBoxLittle(UITextField)的情况下,键盘正在消失,但在textBoxLarge(UITextView)的情况下却没有
作为进一步检查我,按钮调用函数doSomething
- (IBAction)doSomething:(id)sender {
[textBoxLarge resignFirstResponder];
[textBoxLittle resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,键盘在两个文本框中都消失了.
它让我疯狂为什么textFieldShouldReturn适用于小文本框,但不适用于大文本框.
请帮忙!
Rog*_*son 20
三件事:
使您的视图实现UITextViewDelegate.
@interface keyboardDisappearViewController : UIViewController
<UITextFieldDelegate, UITextViewDelegate>
Run Code Online (Sandbox Code Playgroud)
添加以下方法:
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
在接口构建器中将文件的所有者设置为UITextView的委托.
(顺便说一下:解决方案从评论复制到上一个答案,因为我花了一段时间才提取.我虽然其他人可以从我的经验中受益.)
您需要编写代码UITextViewDelegate并将其分配给您的类.
简单的技巧delegate然后为您的文本视图设置
doSomething
{
}
Run Code Online (Sandbox Code Playgroud)
动作连接到ext视图 control event didEndOnExit and tuchupinside
//当用户点击进入/返回时关闭键盘
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
{
[textView resignFirstResponder];
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36118 次 |
| 最近记录: |