iPhone开发【十六】实现点击一个UIImageView时打开键盘

来源:互联网 发布:恢复数据多少钱 编辑:程序博客网 时间:2024/04/20 04:44

转载请注明出处,原文网址:http://blog.csdn.net/m_changgong/article/details/8230658  作者:张燕广

昨天发的一个帖子:http://bbs.csdn.net/topics/390295120?page=1#post-393027319

很多人不理解这样的需求,但是确实存在,具体就不细说了。

同样的需求,做Android客户端时在没有文本框时也可以通过inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);调出系统键盘。

但是,IOS中貌似没有这样的接口,所以可以采用“隐藏文本框”的方式,调出系统键盘,具体实现如下:

1、在ViewController.xib上放置一个ImageView和一个UITextField(代码中将其设置为隐藏),如下:


2、ViewController.h如下:

////  ViewController.h//  showKeyBoard////  Created by Zhang Yanguang on 12-11-27.//  Copyright (c) 2012年 MyCompanyName. All rights reserved.//#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UITextFieldDelegate>{    BOOL hasOpenKeyBoard;//是否打开键盘}@property(strong,nonatomic)IBOutlet UIImageView *imgView;@property(strong,nonatomic)IBOutlet UITextField *textField;-(IBAction)showKeyBoard:(id)sender;@end

3、ViewController.m如下:

////  ViewController.m//  showKeyBoard////  Created by Zhang Yanguang on 12-11-27.//  Copyright (c) 2012年 MyCompanyName. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController@synthesize imgView;@synthesize textField;- (void)viewDidLoad{    [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.    //隐藏文本框    textField.hidden = YES;    //设置代理    textField.delegate = self;    hasOpenKeyBoard = false;}- (void)viewDidUnload{    [super viewDidUnload];    // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    NSLog(@"touchesBegan...");    //[imgView becomeFirstResponder];    if(!hasOpenKeyBoard){        [textField becomeFirstResponder];    }else{        [textField resignFirstResponder];    }    hasOpenKeyBoard=!hasOpenKeyBoard;}#pragma mark UITextFieldDelegate Methods- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    NSLog(@"string=%@",string);    return YES;}@end

方法shouldChangeCharactersInRange中可以监听到键盘输入。

4、效果如下:




原创粉丝点击