ios - UICollectionViewCell 内的 UITextField 无法访问
<p><p>感谢您的阅读,</p>
<p>我在 <code>UICollectionViewCell</code> 中有两个 <code>UITextFields</code>(以及一些标签)。我可以在模拟器中选择两个文本字段,适用于 <strong>iPhone 6、6+、5、5s、4s,所有 iOS8</strong>。</p>
<p>当我连接我的 iPhone,一个 iPhone 5c iOS7(非 sim)时,我只能选择顶部 <code>UITextField</code> 的左上部分。答案将建议如何选择两个文本字段,并探索其他可能的原因某人将无法选择文本字段,以及可能的调试方法。对于那些想知道的人,一旦我让这个应用程序在 ios7 中 100% 运行,我就会升级到 ios8。</p>
<p><strong>我尝试过的解决方案:</strong></p>
<ol>
<li> <a href="https://stackoverflow.com/questions/23575727/unable-to-select-uitextfield" rel="noreferrer noopener nofollow">Make sure the textField is inside the known superview</a> </li>
<li>创建一个新项目,使其正常工作,并尽可能准确地复制所有内容</li>
<li>移动文本字段,使底部的在顶部</li>
<li>这让我在同一个小点击区域中选择了新的“顶部”字段。</li>
<li>选择 UICollectionView 单元并自动设置第一响应者。这不起作用,因为我希望用户选择哪个字段作为第一响应者。</li>
<li>将所有背景元素设置为不同的颜色,以确保没有任何内容与 TextField 重叠</li>
<li> <a href="https://stackoverflow.com/questions/376372/editing-a-uitextfield-inside-a-uitableviewcell-fails" rel="noreferrer noopener nofollow">Set <code>UICollectionView</code> to be Editable</a> -- 它只适用于 <code>UITableViews</code></li>
<li>确保 collectionview 元素的顺序正确</li>
<li>复制并粘贴“Good Text Field”,然后查看是否可以选择。</li>
<li> <a href="https://stackoverflow.com/questions/22436700/focus-on-uitextfield-inside-a-uicollectionviewcell" rel="noreferrer noopener nofollow">Deleting the entire <code>ViewController</code> and starting again.</a> </li>
<li>确保 <code>UICollectionView</code> 单元格具有“<strong>User Interaction Enabled</strong>”</li>
</ol>
<p><strong>我的当前设置</strong></p>
<ul>
<li> <a href="http://www.smallseed.ca/img/stackOverflow/TextFieldNotSelectable.png" rel="noreferrer noopener nofollow">Heres a screenshot of the storyboard</a> </li>
<li><code>UICollectionView: data-source & delegate = 它的 superView(UIViewController)</code></li>
<li><code>UICollectionViewCell</code>:有 4 个导出链接到自定义单元格</li>
<li><code>UITextFields</code>:Delegate 设置为 <code>UIViewController</code>
<ul>
<li>通往细胞的引用导出</li>
<li><code>EditingDidBegin</code> 和 <code>EditingDidEnd</code> 方法在 <code>UIViewController</code></li> 中处理
<li>一个文本字段使用选择器输入 View ,另一个使用键盘</li>
</ul></li>
</ul>
<p><strong>要明确:</strong></p>
<ol>
<li>我可以让键盘在模拟器中弹出,在我的手机上的小点击区域中弹出</li>
<li> <a href="https://stackoverflow.com/questions/24313273/uicollectionviewcell-and-uitextfield-text" rel="noreferrer noopener nofollow">This is not about retrieving the data from text fields.</a> </li>
<li>我可以让测试项目工作,但主项目拒绝接受 <code>UITextFields</code></li> 中的点击
</ol>
<p><strong>相关代码</strong> -
UIViewController .m</p>
<p>接口(interface) - Private.m</p>
<pre><code>@interface EnterFinalHRViewController ()
// The current responder showing a keyboard.
@property (nonatomic, assign) id currentResponder;
</code></pre>
<p>文本字段方法</p>
<pre><code>- (IBAction)editingDidBegin:(UITextField *)textField {
self.currentResponder = textField;
}
- (IBAction)resignOnTap:(id)sender {
//called from a single tap on the view, gesture recognizer is present
//called when the text field says "Editing did End"
;
}
//implementation of the cell
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellIdentifier = @"swimmerReview";
FinalHeartRateCollectionViewCell *cell = (FinalHeartRateCollectionViewCell *); //reuse the cell
Lane *lane = ; //lanes hold swimmers, so get the lane
Swimmer *swimmer = ; //swimmers are in the lane, so get the right swimmer
if (swimmer.actualSwimmerName) {
cell.swimmerFullName.text = swimmer.actualSwimmerName;
} else {
cell.swimmerFullName.text = @"Assign Swimmer";
}
cell.finalHeartRate.text = @"--";
//Person Picker is a PickerView that lets the user select a swimmer
cell.swimmerFullName.inputView = PersonPicker;
cell.averageStrokeRate.text = ;
cell.AveragePace.text = [@"Avg Pace: " stringByAppendingString: swimmer.setSplitAvg];
return cell;
}
</code></pre>
<p><strong>问题</strong></p>
<p>答案将建议如何选择两个文本字段,并探讨其他可能的原因有人无法选择文本字段,以及可能的调试方法。</p>
<p><em>快速向 SO 的所有贡献者大喊,你们都是这样的资源,我从你们回答的所有问题中阅读并学到了很多东西。这次我实在想不通。</em></p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>@Ian MacDonald,您提供了一个调试方法,导致了这个发现的瑰宝 <a href="https://stackoverflow.com/questions/24750158/autoresizing-issue-of-uicollectionviewcell-contentviews-frame-in-storyboard-pro" rel="noreferrer noopener nofollow">Content View Not Resizing</a> .</p>
<p>我的问题是运行 ios7 与 ios8 之一。在我的自定义单元格中简单地覆盖布局 subview 方法解决了这个问题。向@Daniel Plamann 大声疾呼,您可以在上面的页面上为他的解决方案投票。</p>
<p>//放在你的 UICollectionViewCell 自定义类中</p>
<pre><code>- (void)layoutSubviews
{
;
BOOL contentViewIsAutoresized = CGSizeEqualToSize(self.frame.size, self.contentView.frame.size);
if( !contentViewIsAutoresized) {
CGRect contentViewFrame = self.contentView.frame;
contentViewFrame.size = self.frame.size;
self.contentView.frame = contentViewFrame;
}
}
</code></pre>
<p>我的测试项目之所以成功,是因为我是在两天前完成的,而我的主要项目是在 ios8 发布之前的 6 个月前完成的。所以如果你发现你做的一切都正确,按照上面的 10 个步骤,你仍然无法选择你的 subview ,这里还有一个。</p></p>
<p style="font-size: 20px;">关于ios - UICollectionViewCell 内的 UITextField 无法访问,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/26653760/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/26653760/
</a>
</p>
页:
[1]