how can i change the uiview interface orientation when i was clicked a button.
[application setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]; ?
Related
I have a popover that has a textfield on it, when I click on the popover background, the keyboard disappears. However when I click around the popover area, the keyboard doesn't disappear.
Is there a way I can get into the delegate that collapses the popover so that I can add the resignfirstresponder command.
Sure! UIPopoverController has a delegate method popoverControllerShouldDismissPopover: in which you can add the resignFirstResponder command.
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
[self.someTextField resignFirstResponder];
return YES;
}
You can call resign responder methods to the popover dismissal delegate like :
(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
OR
(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
I use UITabBar in my application. In one of my tabbars, i have a UITableView in a UIViewController whose root view controller is a Navigation Controller. When i click on a cell, i go to my custom edit mode which is a UIViewController.
In my edit mode I have a backButton that shows me UIViewController with the TableView.
My problem is when i click backButton, my TabBar disappears.
Do you have any ideas why my TabBar disappears?
Thanks.
In back button click, add the following code.
[self.navigationController popViewControllerAnimated:YES];
I have a UItextField in a UIScrollView. I assigned an inputView (a picker) on my UITextField but it doesn't work. When I click on my textfield, I get the keyboard instead of a picker. When I delete the UIScrollView it works well (I get the picker). Do you have any ideas? Thanks.
Edit (more clear): I have a UItextField in a UIScrollView. I call a method that shows a picker. But the method is never called when my textfield is in a scrollview and I get the keyboard. When I delete the UIScrollView, my method (show picker) is called and I get my picker.
In case you are already using the textfield delegate, try ...
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
[self openCustomPicker:self]; // Call your IBAction method
return NO; // Hide both keyboard and blinking cursor.
}
to prevent the UITextField from showing the keyboard.
I have a UITextField in my iOS app. When a user enters text and clicks Return, the keyboard goes away due to a call to an IBAction with "resignFirstResponder."
However, XCode does not let me drag a line from the UIView itself to File Owner. How do I associate touching the background of a UIView with an IBAction that makes the keyboard go away?
You can use UITapGestureRecognizer. see: Dismiss keyboard by touching background of UITableView
so instead of tableview, just add it to your view instead:
UITapGestureRecognizer *gestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:#selector(hideKeyboard)] autorelease];
gestureRecognizer.cancelsTouchesInView = NO; //so that action such as clear text field button can be pressed
[self.view addGestureRecognizer:gestureRecognizer];
and have a method to hide your keyboard
- (void) hideKeyboard {
[self.view endEditing:YES];
}
You've already noticed that you can't drag from the UIView to the file's owner to assoctiate an action with a touch.
The way to work around this is to change the class of the background view from UIView to UIControl and hook up an action from there to a method in your controller to stop editing.
That's because a UIControl can respond to touch events, and a UIView does not, but a UIControl subclasses UIView, and so it can be used in place of a UIView.
I wrote an example project a while ago that uses this technique. Have a look at the secondViewController's xib file and see how I've change the class of the background view and hooked it up to a an action in the controller to dismiss the keyboard.
Use the touchesBegan with Event and end editing on the view:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
One easy way to do it is to create a big transparent UIButton behind the view.
In my application, I want the keyboard to always be visible in a view. I can do it with a textfield in this way:
[textField1 becomeFirstResponder]; //in viewWillAppear
but I don't have a text field explicitly in the view itself?