首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在endEditing之后如何编程转到textField

在endEditing之后如何编程转到textField
EN

Stack Overflow用户
提问于 2016-02-17 06:34:18
回答 2查看 50关注 0票数 0

我有一个文本字段,当我点击enter时,我的文本字段字符串被发送到一个textView。每次我在文本字段中输入新行时,它都会获取该字符串并将其附加到textView中。

我需要做的是能够连续键入并按enter键,无需重新选择textField即可追加到我的textView中

在viewDidLoad中;

代码语言:javascript
运行
复制
- (void)setupFloatTextBox {
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;

UITextField *noteTextField = [[UITextField alloc] initWithFrame:CGRectMake(5, screenHeight - 55, screenWidth - 5, 30)];
noteTextField.backgroundColor = Rbg2UIColor(51, 182, 124);
[noteTextField.layer setBorderWidth:0.5f];
[noteTextField setAlpha:0.5f];
[noteTextField addTarget:self action:@selector(postJSON:) forControlEvents:UIControlEventEditingDidEnd];
[self.navigationController.view addSubview:noteTextField];
}

和我的选择器操作

代码语言:javascript
运行
复制
- (void)postJSON:(UITextField *)sender {
if (sender.text.length > 0) {
    FireStormClasses *fs = [[FireStormClasses alloc] init];
    fs.CATEGORY = @"TASK";
    fs.TASK = [sender.text substringWithRange:NSMakeRange(3, sender.text.length - 3)];
    fs.WHO = [[sender.text substringToIndex:2] uppercaseString];
    fs.PRIORITY = @"0";
    fs.ACTION = @"UPDATED";
    fs.HIDDEN = @"0";
    fs.UDATE = [FireStorm getCurrentDateWithFormat:@"yyyy-MM-dd"];
    fs.DUEDATE = [FireStorm getCurrentDateWithFormat:@"yyyy-MM-dd"];
    fs.COMPLETEDATE = [FireStorm getCurrentDateWithFormat:@"yyyy-MM-dd"];
    fs.LISTDATE = [FireStorm getCurrentDateWithFormat:@"yyyy-MM-dd"];

    NSURL *URL = [NSURL URLWithString:@"myurl"];
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    [manager.requestSerializer setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [manager POST:URL.absoluteString
       parameters:[fs postCreateJSON]
         progress:nil
          success:^(NSURLSessionDataTask *task, id responseObject) {
              NSLog(@"%@", responseObject);
              [self loadJSONData];
          }
          failure:^(NSURLSessionDataTask *task, NSError *error) {
              NSLog(@"%@", [[NSString alloc] initWithData:(NSData *)error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] encoding:NSUTF8StringEncoding]);
              NSLog(@"%@", error);
          }];

    sender.text = @"";
    [sender resignFirstResponder];
    [sender becomeFirstResponder];
} else {
    NSLog(@"Texfield empty");
} 
}

我用来激活/非激活文本字段的行sender resignFirstResponder];[sender becomeFirstResponder];

我遇到的问题是,在第一次输入/回车时,我会返回到我的文本字段,在那里我可以继续输入,但是在第二次按回车键时,该按钮什么也不做。

heres a video explaining a bit better (很抱歉造成崩溃,请跳到20秒)

EN

回答 2

Stack Overflow用户

发布于 2016-03-02 14:53:23

无需将目标添加到文本字段,只需为该文本字段设置委托,并在UITextfield设置委托方法中,

代码语言:javascript
运行
复制
-(void)textFieldDidEndEditing:(UITextField *)textField
{
    [textField becomeFirstResponder];
}

它会解决你的问题

票数 1
EN

Stack Overflow用户

发布于 2016-02-17 07:19:18

使用UITextFieldTextDidChangeNotification而不是UIControlEventEditingDidEnd。然后,您可以查找行尾以决定更新,忽略其余部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35444337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档