0

連絡先アプリのように、tableViewにいくつかの電話番号を表示させようとしています。重要なのは、削除コントロールをトリガーするテーブルビュー(UITableViewCellEditControl)の右側にある小さな赤いマイナス記号は、セルから移動した後、タップに応答しないということです。(willTrasistionToStateとdidTRansitionToStateを使用してこれを行いました)要するに、TableViewCells内にCellEditControlを含めることができます。それはがらくたのように見えますが、それは機能します。セルの外側の左側にコントロールを配置することもできます。そうすれば見栄えは良くなりますが、コントロールはまったく役に立ちません。

ケーキを食べたい!IEコントロールをセルの外側に表示したいのですが、完全に機能します。これを行う方法についてのアイデアはありますか?

-hitTest: withEvent:-pointInside: withEvent:メソッドのオーバーロードをいじりました が、動作させることができません。

これが私の最も成功した試みの源ですが、まったく成功しませんでした。

私はUITableViewでこれを行っています-この目的のためだけに作成したサブクラス。

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    NSLog(@"%s", __FUNCTION__);
    for (UIView *subView in self.subviews){
        NSLog(@"testing subview: %@", NSStringFromClass(subView.class));
        for (UIView *subsubView in subView.subviews) {
            NSLog(@"testing subsubView: %@", NSStringFromClass(subsubView.class));
            if ([NSStringFromClass(subsubView.class)isEqualToString:@"UITableViewCellEditControl"]) {
                CGPoint subsubViewPoint = [subView convertPoint:point fromView:self];
                if ([subsubView hitTest:subsubViewPoint withEvent:event]) {
                    NSLog(@"found it: %@", NSStringFromClass(subsubView.class));
                    return subsubView;
                }
            }
        }
    }
    UIView *returnView = [super hitTest:point withEvent:event];
    NSLog(@"returnView: %@", NSStringFromClass(returnView.class));
    return returnView;
}

しかし、少なくともそれはくそったれの見方を見つけるでしょう。

編集:これが上記のメソッドが作成するログ出力です。私はそのテキストがたくさんあることを知っていますが、それはかなり速く繰り返されます。

2013-01-29 13:03:21.285 MaklerKid[2559:fb03] -[MKEditableTableView hitTest:withEvent:]
2013-01-29 13:03:21.287 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.287 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.288 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.289 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.290 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.291 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.291 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.292 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.293 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.294 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.294 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.295 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.296 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.296 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.297 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.297 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.298 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.299 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.299 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.300 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.300 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.301 MaklerKid[2559:fb03] found it: UITableViewCellEditControl
2013-01-29 13:03:21.302 MaklerKid[2559:fb03] -[MKEditableTableView hitTest:withEvent:]
2013-01-29 13:03:21.302 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.303 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.303 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.304 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.304 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.305 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.306 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.306 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.307 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.321 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.323 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.324 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.325 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.325 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.326 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.326 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.327 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.327 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.328 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.328 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.329 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.329 MaklerKid[2559:fb03] found it: UITableViewCellEditControl
2013-01-29 13:03:21.330 MaklerKid[2559:fb03] -[MKEditableTableView hitTest:withEvent:]
2013-01-29 13:03:21.341 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.342 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.343 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.343 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.344 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.344 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.345 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.345 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.346 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.346 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.347 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.347 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.348 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.362 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.363 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:21.363 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:21.364 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.365 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:21.365 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.366 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:21.366 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:21.367 MaklerKid[2559:fb03] found it: UITableViewCellEditControl
2013-01-29 13:03:22.061 MaklerKid[2559:fb03] -[MKEditableTableView hitTest:withEvent:]
2013-01-29 13:03:22.062 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.063 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.064 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.065 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.066 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.066 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.067 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.068 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.069 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.069 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.070 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.070 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.071 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.072 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.072 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.073 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.074 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.074 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.075 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.076 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.076 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.077 MaklerKid[2559:fb03] found it: UITableViewCellEditControl
2013-01-29 13:03:22.077 MaklerKid[2559:fb03] -[MKEditableTableView hitTest:withEvent:]
2013-01-29 13:03:22.078 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.079 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.079 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.080 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.080 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.081 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.081 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.082 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.083 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.083 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.084 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.084 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.085 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.085 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.086 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.087 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.087 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.088 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.088 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.089 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.089 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.090 MaklerKid[2559:fb03] found it: UITableViewCellEditControl
2013-01-29 13:03:22.091 MaklerKid[2559:fb03] -[MKEditableTableView hitTest:withEvent:]
2013-01-29 13:03:22.091 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.092 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.093 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.107 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.109 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.110 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.111 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.111 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.112 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.112 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.113 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.113 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.114 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.114 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.115 MaklerKid[2559:fb03] testing subview: MKEditableTableViewCell
2013-01-29 13:03:22.115 MaklerKid[2559:fb03] testing subsubView: UITableViewCellContentView
2013-01-29 13:03:22.128 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.129 MaklerKid[2559:fb03] testing subsubView: UITextField
2013-01-29 13:03:22.129 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.130 MaklerKid[2559:fb03] testing subsubView: UIView
2013-01-29 13:03:22.131 MaklerKid[2559:fb03] testing subsubView: UITableViewCellEditControl
2013-01-29 13:03:22.131 MaklerKid[2559:fb03] found it: UITableViewCellEditControl

次の編集:私が何をしようとしているのかについて混乱があるようです(今のところ「なぜ」を気にしないでください)ここに明確にするためのいくつかの写真があります:

写真1:これは機能しますが、見た目はお粗末です:

これは私が望むものではありません!

写真2:これは良さそうに見えますが、機能しません:

これ欲しい!

また、以前の場所をクリックしても、コントロールがタッチを受け取ることがわかりました。つまり、シナリオ2で、コントロールがシナリオ1にある場所(つまりセル内)をタップすると、コードが実行され、DeleteControlが表示されます。これは誰にとっても意味がありますか?私ではありません、それは確かです。

別の編集:

「セルを再構築して、コントロールするのに十分なスペースがある」などの提案をする人もいましたが、私にはできません。限目。また、「リンゴのデザインパターンを壊してはいけない」と提案されています。編集モードで連絡先アプリのスナップショットを添付しました。この写真のように、EditingControlはセルの外側にあることに注意してください(プライバシーのために名前と番号を削除しました)。

写真3:

ここに画像の説明を入力してください

私を助けてください、私はこれで完全に迷っています。前もって感謝します!

4

1 に答える 1

1

オフにしてからもう一度オンにしてみましたか?

しかし、実際には、ここで「AddressBook.framework」(アドレスブックUIフレームワーク)を探していると思います。

ガイドへのリンク、あなたが探しているものを見つけることを願っています!

于 2013-02-21T09:26:54.780 に答える