ser*_*487 4 cocoa-touch objective-c uitextfield uipopovercontroller
嗨,我一直在关注如何在用户点击工具栏按钮项时显示弹出窗口的书.它工作正常但我想在用户点击textField时显示popover.这似乎是一些微小的调整.就像改变IBAction"showPopover"方法一样.这是该方法的代码:
- (IBAction)showPopover:(id)sender{
if(popoverController == nil){ //make sure popover isn't displayed more than once in the view
popoverController = [[UIPopoverController alloc]initWithContentViewController:popoverDetailContent];
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.delegate = self;
}
}
Run Code Online (Sandbox Code Playgroud)
除了"presentPopoverFromBarItem"之外还有另一个实例方法叫做"presentPopoverFromRect".我会用它吗?我试着为它编写代码,但我不确定如何将它与我的TextField相关联或如何绘制需要的矩形.任何人都可以帮我这个吗?谢谢.
Mat*_*uch 10
你必须使用textfields委托方法 textViewShouldBeginEditing:
像这样的东西:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
if(popoverController == nil){ //make sure popover isn't displayed more than once in the view
popoverController = [[UIPopoverController alloc]initWithContentViewController:popoverDetailContent];
}
[popoverController presentPopoverFromRect:textView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
popoverController.delegate = self;
return NO; // tells the textfield not to start its own editing process (ie show the keyboard)
}
Run Code Online (Sandbox Code Playgroud)
对于那些想要显示弹出框,但不想在点击文本字段时显示键盘的人,这里是我一直使用的解决方案(注意这与前面的答案textFieldShouldBeginEditing不同):
/*
* Handle when text field is about to start edit mode
*/
- (BOOL)textFieldShouldBeginEditing:(UITextField *) textField
{
// Create popover controller if nil
[self.myPopover presentPopoverFromRect:textField.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
19269 次 |
| 最近记录: |