博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITableView中cell里的UITextField不被弹出键盘挡住
阅读量:4478 次
发布时间:2019-06-08

本文共 4137 字,大约阅读时间需要 13 分钟。

UITableView中cell里的UITextField不被弹出键盘挡住

 

 本人视频教程系类   

 

效果如下:

源码:

EditCell.h 与 EditCell.m

////  EditCell.h//  Cell////  Created by YouXianMing on 14/12/18.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import 
@interface EditCell : UITableViewCell@property (nonatomic, strong) UITextField *field;@end
////  EditCell.m//  Cell////  Created by YouXianMing on 14/12/18.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "EditCell.h"@implementation EditCell- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];    if (self) {        UIView *line         = [[UIView alloc] initWithFrame:CGRectMake(0, 43, 320, 1)];        line.backgroundColor = [UIColor colorWithRed:0.886 green:0.918 blue:0.933 alpha:1];        [self addSubview:line];                _field               = [[UITextField alloc] initWithFrame:CGRectMake(20, 2, 280, 42)];        _field.textColor     = [UIColor grayColor];        _field.font          = [UIFont fontWithName:@"HelveticaNeue-Thin" size:18];        [self addSubview:_field];    }        return self;}@end

ViewController.m

////  ViewController.m//  Cell////  Created by YouXianMing on 14/12/18.//  Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "EditCell.h"static NSInteger number = 8;@interface ViewController ()
@property (nonatomic, strong) UITableView *tableView;@property (nonatomic, weak) UITextField *tmpTextField; // 获取当前编辑的TextField@property (nonatomic, strong) NSMutableArray *strsArray;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 数据源(初始化) _strsArray = [NSMutableArray array]; for (int i = 0; i < number; i++) { [_strsArray addObject:@""]; } // 初始化tableView _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; _tableView.backgroundColor = [UIColor colorWithRed:0.949 green:0.957 blue:0.961 alpha:1]; [self.view addSubview:_tableView]; _tableView.delegate = self; _tableView.dataSource = self; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; [_tableView registerClass:[EditCell class] forCellReuseIdentifier:@"YouXianMing"]; }- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return number;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { EditCell *cell = [tableView dequeueReusableCellWithIdentifier:@"YouXianMing"]; cell.field.delegate = self; cell.field.text = _strsArray[indexPath.row]; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell;}#pragma mark - UITextField代理- (void)textFieldDidBeginEditing:(UITextField *)textField { // 获取到临时的textField并存储起来 self.tmpTextField = textField; // 获取到父类cell EditCell *cell = (EditCell *)[self.tmpTextField superview]; // 获取到indexPath NSIndexPath *path = [self.tableView indexPathForCell:cell]; // 执行动画(移动到输入的位置) [self.tableView setContentOffset:CGPointMake(0, (path.row)*44) animated:YES];}- (void)textFieldDidEndEditing:(UITextField *)textField { // 获取到临时的textField并存储起来 self.tmpTextField = textField; // 获取到父类cell EditCell *cell = (EditCell *)[self.tmpTextField superview]; // 获取到indexPath NSIndexPath *path = [self.tableView indexPathForCell:cell]; // 存储到数据源中 [_strsArray replaceObjectAtIndex:path.row withObject:(textField.text == nil ? @"" : textField.text)]; // 打印信息 NSLog(@"%@", _strsArray);}- (BOOL)textFieldShouldReturn:(UITextField *)sender { // 执行动画(恢复到原始位置) [self.tableView setContentOffset:CGPointMake(0, 0) animated:YES]; // 交出第一响应者 [sender resignFirstResponder]; return YES;}@end

以下是需要注意的地方:

通过父视图获取到了cell,然后根据cell获取indexPath值,然后可以做事情了

核心代码是根据第几个cell来执行位移的动画,这个值是可以调整的。

 

转载于:https://www.cnblogs.com/YouXianMing/p/4174769.html

你可能感兴趣的文章
WordCount bug修复录
查看>>
承载进程 (vshost.exe)
查看>>
[转]WPF MVVM 实战
查看>>
[转载] Python 标准库 urllib2 的使用细节
查看>>
Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果
查看>>
Java学习——Applet写字符串(调字体)
查看>>
react路由
查看>>
nyoj 220——推桌子——————【贪心】
查看>>
java 静态方法分析
查看>>
codevs——4189 字典&&HihoCoder #1014 : Trie树
查看>>
洛谷——P1602 Sramoc问题
查看>>
【MySQL笔记】字符串、时间日期转换
查看>>
jQuery实战之仿淘宝商城左侧导航效果
查看>>
AC日记——「SCOI2016」幸运数字 LiBreOJ 2013
查看>>
unmount
查看>>
数据库连接池
查看>>
javascript获得和设置以及移除元素属性的三个方法
查看>>
windwos iis 7.5 使用html 报405错误
查看>>
范围(地址转换)
查看>>
Unity3D游戏,TCP,WEBCOSKT,HTTP通信架构 weaving-socket
查看>>