将文本滚动到屏幕外后将其保留在 UITextView 中

发布于 2024-11-13 15:16:12 字数 3205 浏览 6 评论 0原文

我的桌子只有 2 个部分。我的表的第二部分有一个 UITextView 作为子视图。以及第一部分中可能引用的列表。

我遇到一个问题,一旦用户选择一个特定的引用,它就会像这样“粘贴”到 UITextView 中:

replyTextView.text = [NSString stringWithFormat:@"@%@ UserName writes... \n[\"%@\"]", replyPostCode,[separatedString objectAtIndex:indexPath.row]];

或者在文本视图中键入文本,在他们滚动离开文本视图后,它就会离开屏幕,它会被清除。我想这是因为我不断从表中释放它。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
NSString *replyCellIdentifier = @"replyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    if ([indexPath section] == 0) {
        cell = [self CreateMultilinesCell:CellIdentifier];      
    }
    else if ([indexPath section] == 1) {
        //NSLog(@"TextField");
        cell = [self CreateMultilinesCell:replyCellIdentifier];     
        if ([indexPath row] == 0) {
            replyTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 300, 150)];
            //replyTextView.adjustsFontSizeToFitWidth = YES;
            replyTextView.textColor = [UIColor blackColor];
            replyTextView.keyboardType = UIKeyboardTypeASCIICapable;
            replyTextView.returnKeyType = UIReturnKeyDefault;
            replyTextView.backgroundColor = [UIColor whiteColor];
            replyTextView.autocorrectionType = UITextAutocorrectionTypeNo; 
            replyTextView.autocapitalizationType = UITextAutocapitalizationTypeNone;
            replyTextView.textAlignment = UITextAlignmentLeft;
            replyTextView.tag = 0;

            replyTextView.editable = YES;
            replyTextView.delegate = self;
            replyTextView.scrollEnabled = YES;

            //[replyTextView becomeFirstResponder];

            //replyTextView.clearButtonMode = UITextFieldViewModeNever;
            //[replyTextView setEnabled: YES];

            [cell.contentView addSubview:replyTextView];

            [replyTextView release];
            //cell.detailTextLabel.text = @"";
        }           
    }
}
//NSLog(@"%d", [indexPath section]);
if ([indexPath section] == 0) {
    cell.detailTextLabel.text = [separatedString objectAtIndex:indexPath.row];

}
return cell;
}

我只是想知道当用户将 uitextview 从屏幕上滚动并再次返回时,将文本保留在 UITextView 中的最佳方法是什么?

更新

- (UITableViewCell*) CreateMultilinesCell :(NSString*)cellIdentifier
{

 //NSLog(@"Entering CreateMultilinesCell");
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                                reuseIdentifier:cellIdentifier] autorelease];

cell.detailTextLabel.numberOfLines = 0;
cell.detailTextLabel.font = [self SubFont];
cell.detailTextLabel.textColor = [UIColor colorWithRed:10.0/255 green:10.0/255 blue:33.0/255 alpha:1.0];
[cell setBackgroundColor:[UIColor clearColor]];//]colorWithRed:.98 green:.98 blue:.99 alpha:1.0]];
[self.tableView setBackgroundColor:[UIColor clearColor]];//colorWithRed:.94 green:.96 blue:.99 alpha:1.0]];
                                                         //NSLog(@"Exiting CreateMultilinesCell");
return cell;
}

My table only has 2 sections. I have a UITextView as a subview in the 2nd section of my table. and a list of possible quotes in the first section.

I'm having a problem where once the user selects a particular quote which gets "pasted" into the UITextView like so:

replyTextView.text = [NSString stringWithFormat:@"@%@ UserName writes... \n[\"%@\"]", replyPostCode,[separatedString objectAtIndex:indexPath.row]];

or types text into the textview, after they scroll away from the textview so it's off the screen it gets cleared. I guess this is because I keep releasing it from my table..

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
NSString *replyCellIdentifier = @"replyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    if ([indexPath section] == 0) {
        cell = [self CreateMultilinesCell:CellIdentifier];      
    }
    else if ([indexPath section] == 1) {
        //NSLog(@"TextField");
        cell = [self CreateMultilinesCell:replyCellIdentifier];     
        if ([indexPath row] == 0) {
            replyTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 300, 150)];
            //replyTextView.adjustsFontSizeToFitWidth = YES;
            replyTextView.textColor = [UIColor blackColor];
            replyTextView.keyboardType = UIKeyboardTypeASCIICapable;
            replyTextView.returnKeyType = UIReturnKeyDefault;
            replyTextView.backgroundColor = [UIColor whiteColor];
            replyTextView.autocorrectionType = UITextAutocorrectionTypeNo; 
            replyTextView.autocapitalizationType = UITextAutocapitalizationTypeNone;
            replyTextView.textAlignment = UITextAlignmentLeft;
            replyTextView.tag = 0;

            replyTextView.editable = YES;
            replyTextView.delegate = self;
            replyTextView.scrollEnabled = YES;

            //[replyTextView becomeFirstResponder];

            //replyTextView.clearButtonMode = UITextFieldViewModeNever;
            //[replyTextView setEnabled: YES];

            [cell.contentView addSubview:replyTextView];

            [replyTextView release];
            //cell.detailTextLabel.text = @"";
        }           
    }
}
//NSLog(@"%d", [indexPath section]);
if ([indexPath section] == 0) {
    cell.detailTextLabel.text = [separatedString objectAtIndex:indexPath.row];

}
return cell;
}

I'm just wondering just what is the best way to keep the text in my UITextView when the user scrolls the uitextview off the screen and back again?

update

- (UITableViewCell*) CreateMultilinesCell :(NSString*)cellIdentifier
{

 //NSLog(@"Entering CreateMultilinesCell");
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                                reuseIdentifier:cellIdentifier] autorelease];

cell.detailTextLabel.numberOfLines = 0;
cell.detailTextLabel.font = [self SubFont];
cell.detailTextLabel.textColor = [UIColor colorWithRed:10.0/255 green:10.0/255 blue:33.0/255 alpha:1.0];
[cell setBackgroundColor:[UIColor clearColor]];//]colorWithRed:.98 green:.98 blue:.99 alpha:1.0]];
[self.tableView setBackgroundColor:[UIColor clearColor]];//colorWithRed:.94 green:.96 blue:.99 alpha:1.0]];
                                                         //NSLog(@"Exiting CreateMultilinesCell");
return cell;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风筝有风,海豚有海 2024-11-20 15:16:12

最简单的解决方案是对两种类型的单元使用不同的单元标识符。

编辑:我看到您正在使用两种不同的类型,但您没有在 dequeue 调用中考虑到这一点。

The easiest solution is to use a different cell identifier for the two types of cells.

Edit: I see you are using two different types, but you are not taking that into account in the dequeue call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文