问题描述
#import "MyLocationViewController.h"
#import <GoogleMaps/GoogleMaps.h>
@interface MyLocationViewController ()
@end
@implementation MyLocationViewController {
GMSMapView *mapView_;
CLLocationManager *locationManager;
}
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
NSLog(@"Current identifier: %@", [[NSBundle mainBundle] bundleIdentifier]);
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
longitude:151.20
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
//Add text field
UITextField *textField = [[UITextField alloc] init];
textField.frame = CGRectMake(mapView_.bounds.size.width - 290, mapView_.bounds.size.height - 48, 180, 40);
textField.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:15];
textField.placeholder = @"enToi UHMUH Bar Heya";
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.keyboardType = UIKeyboardTypeDefault;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.delegate = self;
[mapView_ addSubview:textField];
[mapView_ resignFirstResponder];
[mapView_ bringSubviewToFront:textField];
[textField becomeFirstResponder];
//Add Send Chat Button to UI
UIButton *sendButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
sendButton.frame = CGRectMake(mapView_.bounds.size.width - 100, mapView_.bounds.size.height - 48, 90, 40);
sendButton.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
[sendButton setTitle:@"Send" forState:UIControlStateNormal];
[mapView_ addSubview:sendButton];
// Creates a marker in the center of the map.
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
marker.title = @"Sydney";
marker.map = mapView_;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"didFailWithError: %@", error);
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Error"
message:@"Failed to get your location!"
delegate:nil
cancelButtonTitle:@"OKAY"
otherButtonTitles:nil];
[errorAlert show];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *currentLocation = [locations lastObject];
NSLog(@"didUpdateLocations: %@", currentLocation);
if (currentLocation != nil) {
GMSCameraPosition *newSpot = [GMSCameraPosition cameraWithLatitude:currentLocation.coordinate.latitude
longitude:currentLocation.coordinate.longitude
zoom:6];
[mapView_ setCamera:newSpot];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
这是我的头文件:
Here's my header file:
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface MyLocationViewController : UIViewController <CLLocationManagerDelegate, UITextFieldDelegate>
@property (nonatomic, retain) UITextField *textField;
@end
我没有使用Interface Builder。当应用程序加载时,我可以看到我的文本框和按钮。触摸时,按钮会执行默认的切换行为。文本字段不可编辑 - 不能通过点击键盘来输入键盘,不能输入等。
I am not using Interface Builder. When the app loads I can see my textfield and button. The button does its default toggle behavior when touched. The text field is not editable - can't bring up the keyboard by clicking it, cant type into, etc.
我确实运行了某人的方法来确定一个帧是出于其父视图的界限,它回来说它是超出界限 - 但我不太清楚如何解决这个问题。
I did run someone's method to determine if a frame is out of its parent view's bounds and it came back as saying it was out of bounds - but I'm not quite sure how to resolve this.
推荐答案
googleMapView有一个阻止所有用户输入的BlockingGestureRecognizer。不要将文本字段添加到地图中,或者移除阻止程序:
The googleMapView has a BlockingGestureRecognizer that blocks all user input. don't add the textfield to the map OR remove the blocker:
// Remove the GMSBlockingGestureRecognizer of the GMSMapView.
+ (void)removeGMSBlockingGestureRecognizerFromMapView:(GMSMapView *)mapView
{
if([mapView.settings respondsToSelector:@selector(consumesGesturesInView)]) {
mapView.settings.consumesGesturesInView = NO;
}
else {
for (id gestureRecognizer in mapView.gestureRecognizers)
{
if (![gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
{
[mapView removeGestureRecognizer:gestureRecognizer];
}
}
}
}
这篇关于iOS谷歌地图textField没有响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!