iOS常见问题(2)

一、模拟器黑屏

  解决方法:

二、打代码时,Xcode没提示

  解决方法:

  0. 点击Preferences

  1. 进入Text Editing

  2. 勾选

三、有时候可能在勾选 Autolayout的时候,搞错了对象,误把控制器的View的User Interaction Enabled勾选掉了。

  

  解决办法:User Interaction Enabled 必须勾选,否则控制器根视图中所有子控件无法进行任何操作。

  

  

四、访问权限

  错误:

  会报链接错误。

  

  报错原因,利用下划线访问了@package这个权限里的东西。

  

  被@package 修饰的成员属性只能在同一个框架内部才允许访问。否则会引发link erro。

  @private 实例变量只能被声明它的类访问

  @protected 实例变量能被声明它的类和子类访问。

  @public 实例变量可以被任何类访问。

五、运行程序时,显示运行完成,但是模拟器没反应。

  

  问题原因: 有时候应用程序的标示符一样,会导致程序不能成功运行。

  解决方式一:将模拟器之前的程序删除。

  解决方式二:  将模拟器还原

六、2d表示保留两位 02d 表示不够了 用0来补齐。

1 NSLog(@"%02d",cols);

七、Plist文件读取。

  

  错误原因:不要看到有很多元素的,就认为是数组。这样解析是错误的。

  _dict = [NSArray arrayWithContentsOfFile:path];

  这个pist文件是一个字典,正确的解析此plist文件。

  // 2.根据文件路径加载字典

  _dict = [NSDictionary dictionaryWithContentsOfFile:path];

八、给程序拖图片的时候,一定要注意,如下图勾选的,都要勾选中。

  

九、禁用UITextField的双击出现复制粘贴剪切等操作

  解决方式:

  有时候我们需要禁用UITextField的双击出现copy paste的功能,然而UITextField本身没有直接设置禁止用户复制粘贴剪切操作等方法,但是可以重载canPerformAction方法来实现。

  新建一个类继承UITextField,然后实现canPerformAction方法:
  只需覆盖canPerformAction:withSender方法就可以,canPerformAction:withSender属于UIResponder类的。

  如下:

1 -(BOOL)canPerformAction:(SEL)action withSender:(id)sender 
2 {
3 UIMenuController *menuController = [UIMenuController sharedMenuController];
4 if (menuController) {
5 [UIMenuController sharedMenuController].menuVisible = NO;
6 }
7 return NO;
8 }

十、将UIButton添加到UILabel,UIButton是不能点击的。

  原因:

  1.UILabel是继承UIView的,默认不能监听点击事件。UIButton是继承UIControl能够监听点击事件。

  2.将UIButton添加到UILabel,他们之间的关系是UILabel是UIButton的父视图,父视图都不能监听点击事件,自然而然不会将事件传递给子视图,因此UIButton也不能监听点击事件了。

  思维指导:有些人会认为UIControl不是继承UIView的吗,都是继承UIView,为什么单独继承UIControl可以监听点击事件,继承UIControl的父类UIView不能监听事件了,这是因为我们一般在父类里实现的都是一些共用的属性和方法,而在子类中具体实现子类特有的方法。因此在UIControl实现了监听点击的特有方法,即继承UIControl才能监听点击事件。

原文地址:https://www.cnblogs.com/CJDog/p/5113725.html