菜鸟教程小白 发表于 2022-12-12 13:27:08

ios - XCode iOS7 - 带有 UITextView 的动态单元格,如 Reminder App


                                            <p><p>我需要创建一个与内置提醒应用程序具有相同行为的应用程序。创建这个有一些问题:</p>

<ul>
<li>具有动态高度并作为 UITextView 内容“增长”的单元格</li>
<li>选择触摸的单元格</li>
<li>当用户编辑内容时刷新单元格的高度(动态)</li>
</ul>

<p>我已经用一些技巧解决了动态高度。</p>

<p>剩下的问题是:</p>

<p><strong>如果单元格“完全”带有 UITextView,如何知道用户选择了哪个单元格?</strong></p>

<p>现在我已经使用 textViewDidBeginEditing 方法来了解单元格并将 UITableView 滚动到它:</p>

<pre><code>- (void)textViewDidBeginEditing:(UITextView*)textView
{
    MemoViewCell* cell = (MemoViewCell *);
    if (cell)
    {
      NSIndexPath* indexPath = ;
      currentIndexPath = indexPath;
      ;
    }
}

- (UITableViewCell*)parentCellFor:(UIView*)view
{
    if (!view)
      return nil;
    if (])
      return (UITableViewCell*)view;
    return ;
}
</code></pre>

<p><strong>如何在不丢失焦点的情况下刷新单元格高度?</strong></p>

<p>对此,我用过这种方法:</p>

<pre><code>-(void)textViewDidChange:(UITextView *)textView
{
    NSMutableDictionary *dataSourceItem = ;
    ;
    ;

    ;
    ;
}
</code></pre>

<p>当文本更改时,我得到新文本,我在模型中更改它并调用 beginUpdated 和 endUpdates。</p>

<p>当然,这行得通,但一切都非常缓慢......你有什么想法以一种更优雅的方式,也许......高效吗?</p>

<p>如果我调用 reloadRowsAtIndexPaths: 我失去了对单元格的关注。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>首先,如果你在你的动态高度技巧中使用了委托(delegate)方法<code>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;</code>,记得实现这个方法沿着 <code>- (CGFloat)tableView:(UITableView *)tableViewestimateHeightForRowAtIndexPath:(NSIndexPath *)indexPath;</code>,对性能有很大帮助。</p>

<p>然后专注于您的特定项目,如果我正确理解您的目标,您真正想要的是仅在修改 TextView 时更新表格 View 的布局。目前,您在每次文本更改时更新它。你可以考虑在<code>-(void)textViewDidChange:(UITextView *)textView</code>里面使用一个条件,比如:</p>

<pre><code>if (.height !=
textView.frame.size.height) {
    ;
    ;
}
</code></pre>

<p>仅当您现有的单元格布局尊重 TextView 的固有内容大小时,作为示例给出的条件才有效,否则您将需要调整条件。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - XCode iOS7 - 带有 UITextView 的动态单元格,如 Reminder App,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27744228/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27744228/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - XCode iOS7 - 带有 UITextView 的动态单元格,如 Reminder App