【问题标题】:Disable delegate methods depending on iOS version根据 iOS 版本禁用委托方法
【发布时间】:2013-09-09 14:29:01
【问题描述】:

我使用一些UIPickerView 委托方法仅用于 NDA 下的全新 Ive 修改的 iOS,例如

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

我不想为iOS6, 实现它们以保留默认的iOS 行为,因此方法内的条件将不起作用。怎么办?

【问题讨论】:

  • 这个可以通过上一个问题stackoverflow.com/questions/3339722/check-iphone-ios-version来回答
  • 如果委托方法只为特定版本的 iOS 或更高版本声明,它只会在那些版本中被调用。你必须解决这个问题并找到另一种方法。
  • 在iOS之前的版本中声明过,所以叫
  • 您可以尝试调配方法实现或仅为特定操作系统版本添加方法实现。

标签: iphone ios objective-c uikit uipickerview


【解决方案1】:

在您的委托中,覆盖 respondsToSelector: 并在旧操作系统的情况下返回 NO

- (BOOL)respondsToSelector:(SEL)selector
{
    if (selector == @selector(pickerView:viewForRow:forComponent:reusingView:))
        return MyFunctionThatChecksIosVersionIsMinimum7();
    return [super respondsToSelector:selector];
}

所以您正在正常实现委托方法。当Picker View询问您的代表是否了解您只是撒谎的消息时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多