Domanda

Non ho posizioni calcolate e offset su carta. Ho scritto il codice e il debug che ottengo risultati attesi. Tuttavia sulle cose iPhone Simulator si sovrappongono di circa 15 pixel.

Per andare avanti con la mia debug, ho bisogno di sapere dove gli oggetti esattamente UI sono sullo schermo.

Related alla tastiera di ricerca pop-up e il ridimensionamento di un UITableView tra UISearchBar statico e dinamico UITabBar aggiunto (vista tabella è incorporato in una delle schede). No, davvero non vogliono utilizzare i valori hardcoded a causa di rotazione e di diverse dimensioni dello schermo.

Come faccio a sapere questo?

- (void)keyboardWasShown:(NSNotification*)aNotification
{
if (self.keyboardShown)
    return;

// Get keyboard dimensions
NSDictionary* info = [aNotification userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize kbSize = [aValue CGRectValue].size;
NSValue* endValue = [info objectForKey:UIKeyboardCenterEndUserInfoKey];
CGPoint endCenter = [endValue CGPointValue];

CGRect frame = myView.frame;
frame.size.height = endCenter.y - kbSize.height/2 - frame.origin.y;

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];

myView.frame = frame;

[UIView commitAnimations];

self.keyboardShown = YES;
}

... il codice nel caso in cui ci sei bug evidenti non posso più vedere ...

È stato utile?

Soluzione

La cosa migliore è probabilmente convertPoint:toView: di UIView. Per sapere dove si trova una determinata vista, utilizzare:

CGPoint myPoint = [myView convertPoint:CGPointMake(0, 0) toView:((YourAppDelegate *)[[UIApplication sharedApplication] delegate]).window];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top