isKindOfClass每次都返回TRUE?

JAY*_*RKA -1 cocoa-touch if-statement objective-c ios

我有一个scrollView名为svCreateTask.在此scrollView我把UITextField,UITextView,UIButtons静态和UIView编程按下按钮.现在我想删除UIView按下按钮.和视图从其scrollView标签中移除与Button标签相同.

并且if语句每次检查都是TRUE,因此其标签与我的按钮标签相同的其他子视图也会从中删除scrollView.我只想删除UIView.

在这里,我发布我的代码:

 NSLog(@"Enter in removeNotification method.");

    UIButton *btn = (UIButton *)sender;
    NSLog(@"btn Tag = %d",[btn tag]);

    NSArray *viewsToRemove = [svCreateTask subviews];

    for (int i=0; i<viewsToRemove.count; i++)
    {
        NSLog(@"Class == %@",[[viewsToRemove objectAtIndex:i] class]);
        if ([[viewsToRemove objectAtIndex:i]isKindOfClass:[UIView class]])
        {
            NSLog(@"In Class Check...");
            UIView *v =[viewsToRemove objectAtIndex:i];
            if (v.tag == btn.tag)
            {
                [v removeFromSuperview];
            }
        }

    }
Run Code Online (Sandbox Code Playgroud)

我的NSLog是.

2014-05-13 14:49:42.769 TOPDesign[379:11303] Enter in removeNotification method.
2014-05-13 14:49:42.770 TOPDesign[379:11303] btn Tag = 1
2014-05-13 14:49:42.771 TOPDesign[379:11303] Class == UILabel
2014-05-13 14:49:42.772 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.773 TOPDesign[379:11303] Class == UITextView
2014-05-13 14:49:42.773 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.774 TOPDesign[379:11303] Class == UITextField
2014-05-13 14:49:42.775 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.775 TOPDesign[379:11303] Class == UIButton
2014-05-13 14:49:42.776 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.777 TOPDesign[379:11303] Class == UIButton
2014-05-13 14:49:42.777 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.778 TOPDesign[379:11303] Class == UIButton
2014-05-13 14:49:42.779 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.780 TOPDesign[379:11303] Class == UIButton
2014-05-13 14:49:42.780 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.781 TOPDesign[379:11303] Class == UIButton
2014-05-13 14:49:42.782 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.782 TOPDesign[379:11303] Class == UIButton
2014-05-13 14:49:42.783 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.783 TOPDesign[379:11303] Class == UILabel
2014-05-13 14:49:42.784 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.784 TOPDesign[379:11303] Class == UILabel
2014-05-13 14:49:42.785 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.786 TOPDesign[379:11303] Class == UIImageView
2014-05-13 14:49:42.786 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.787 TOPDesign[379:11303] Class == UIImageView
2014-05-13 14:49:42.787 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.788 TOPDesign[379:11303] Class == UIImageView
2014-05-13 14:49:42.788 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.789 TOPDesign[379:11303] Class == UIImageView
2014-05-13 14:49:42.789 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.790 TOPDesign[379:11303] Class == UIImageView
2014-05-13 14:49:42.799 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.801 TOPDesign[379:11303] Class == UIView
2014-05-13 14:49:42.801 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.802 TOPDesign[379:11303] Class == UIView
2014-05-13 14:49:42.802 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.803 TOPDesign[379:11303] Class == UIImageView
2014-05-13 14:49:42.803 TOPDesign[379:11303] In Class Check...
2014-05-13 14:49:42.804 TOPDesign[379:11303] Class == UIView
2014-05-13 14:49:42.805 TOPDesign[379:11303] In Class Check...
Run Code Online (Sandbox Code Playgroud)

我的屏幕结构是.

UIView(main view) > ScrollView > TextField,TextView,Label, Buttons, UIView Etc.
Run Code Online (Sandbox Code Playgroud)

我想得到UIView哪个是我的子视图scrollView.

Flo*_*dis 5

isKindOfClass对于任何派生类也返回true.因为所有与用户界面相关的类都是派生自的UIView,所以此方法对于您的案例中的所有对象都返回true.

如果您只想测试一个UIView类,请使用这样的代码:

if ([obj class] == [UIView class]) {
}
Run Code Online (Sandbox Code Playgroud)

此代码仅检查该类型的对象UIView.