我们在做比如地区选择的时候,会使用到pickview,用户使用的时候就选择对应地区点击确定按钮或者取消按钮来结束编辑.但是,如果我们这样做:
UIPickerView *pick = [[UIPickerView alloc] init];
[pick addSubview:cancel_btn];
[pick addSubview:ok_btn];
效果如图所示:
点击按钮的时候发现,点击事件被pickview监听了,按钮接收不到事件.所以这种做法不可用.
当然,也可以点击地区选择的时候,我们弹出一个蒙版,然后蒙版上面添加pickview,cancel_btn和ok_btn,然后监听按钮点击,将选择好的数据传递给控制器.这种做法可行,但是想想都麻烦,不推荐.
建议用下面的做法:
记得 UITextField有一个inputView属性,这个就是可以控制点击field弹出的视图,我们要做的,就是field.inputView = pickView;
重点来了,按钮怎么放呢?我们自定义一个UITextField,field有一个属性,叫做inputAccessoryView,它会给field弹出的视图增加一个辅助视图,这个时候我们仅需将按钮加到这个辅助视图就行了.
UIToolbar *tool = [[UIToolbar alloc] init];
tool.frame = CGRectMake(0, 0, 0, 44);
[tool addSubview:cancel_btn];
[tool addSubview:ok_btn];
field.inputAccessoryView = tool;
按钮的位置你只需要在 layoutSubviews方法中
然后效果如下: