我在这里阅读了很多关于这个主题的帖子,但我找不到我的问题的答案,所以,希望你不会对另一篇 UIKeyboard 帖子感到厌烦:-)
在我的 View Controller 的实现中,我添加了 self 作为两个通知 UIKeyboardWillShowNotification 和 UIKeyboardWillHideNotification 的观察者,传递了选择器 keyboardWillShow : 和 keyboardWillHide: 来处理通知。当我触摸 UITextField 时,keyboardWillShow: 方法被调用,但是当我按下“完成”按钮(关闭键盘)时,keyboardWillHide: 方法未被调用。
真的,我想让我的 UITextField 显示键盘右下角带有“隐藏按钮”的键盘,但我找不到正确的键盘类型。也许我需要将文本字段 retuntype 设置为“...完成”。这样我就看到“返回”键变成了“完成”。
因此,我将工具栏设置为我的 UITextField 的 inputAccessoryView,因此现在我可以显示一个标准键盘,上面有一个工具栏,并带有“完成”按钮。当用户触摸该按钮时,我使用 resignFirstResponder 方法隐藏键盘。
奇怪的是,当我调用 resignFirstResponder 时,UIKeyboardWillHideNotification 没有发布;至少 keyboardWillHide: 方法没有被调用。
你对我有什么建议?我真的很想用带有向下箭头的小按钮显示键盘以隐藏键盘,但这个解决方案也可能是正确的,但我想调整 View 的大小并为此我需要观察者 UIKeyboardWillHideNotification.
非常感谢您的帮助...
(已添加:)
在viewDidLoad中:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:[[self view] window]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:[[self view] window]];
我从“你的”帖子中获取了这些声明 :-) 但是 willShow 有效......
UIToolbar 中的“完成”按钮的操作被指定为我的文本字段的 inputAccessoryView 是:
-(void)keyboardDone {
[msgTextField resignFirstResponder];
关闭: 好的!当一个开发者是愚蠢的...它是愚蠢的 :-) :-)
这是我更正后的 willHide 方法:
-(void)keyboardWillHide:(NSNotification*)n {
NSDictionary* userInfo;
CGSize keyboardSize;
CGRect viewFrame;
/* This was the bad guy :) I forgot to delete it
* after I previously copied the willShow method that
* checks if keyboard is already shown (if so returns).
*
* if( keyboardIsShown )
* return;
*/
userInfo = [n userInfo];
keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
viewFrame = [[self scrollView] frame];
viewFrame.size.height += ( keyboardSize.height - TABBAR_HEIGHT );
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.5];
[[self scrollView] setFrame:viewFrame];
[UIView commitAnimations];
keyboardIsShown = NO;
NSLog(@"HIDE\n");
}
首先,我要感谢大家对我的无用工作的帮助。我想给你一些分数,所以我会尝试为每个答案增加一个“兴趣点”,但我需要选择正确的……困难的部分……:-)
再次打扰一下...我真的没看到if()语句...
最佳答案
如果您阅读了 UIWindow 的文档,它说这些通知的通知对象是 nil。您正在将 self.view.window 作为对象传递给 addObserver:selector:name:object: 方法。尝试传递 nil 代替:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
关于iphone - 未触发 UIKeyboardWillHide,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12322137/
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
我有一个rubyonrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
我想写一点“Deprecate-It”库并经常使用“method_added”回调。但是现在我注意到在包含模块时不会触发此回调。是否有任何回调或变通方法,以便在某些内容包含到自身时通知类“Foobar”?用于演示的小Demo:#IncludingModulswon'ttriggermethod_addedcallbackmoduleInvisibleMethoddefinvisible"Youwon'tgetacallbackfromme"endendclassFoobardefself.method_added(m)puts"InstanceMethod:'#{m}'addedto'
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat
我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符
我知道应该有一种方法可以使用awsrubysdk为AWSLambda创建触发器(就像可以使用AWS管理控制台一样)。*更新,我找到了创建触发器的方法。我正在使用以下代码来执行此操作:@cloudwatchlogs=Aws::CloudWatchLogs::Client.new(region:region,credentials:Aws::Credentials.new(aws_access_key_id,aws_secret_access_key))@cloudwatchlogs.put_subscription_filter({log_group_name:"RDSOSMetri
我有一个使用deviseonrails3的应用程序。我想启用http身份验证,以便我可以从iPhone应用程序向我的网络应用程序进行身份验证。如何从我的iPhone应用程序进行身份验证以进行设计?这安全吗?还是我应该进行不同的身份验证? 最佳答案 从设计的角度来看,您有3个选择:1)使用基本的http身份验证:您的iPhone应用程序有一个secretkey-这是在您的iPhone应用程序代码中烘焙的-用于对网络应用程序的每个请求进行身份验证。Google搜索:“设计基本的http身份验证”2)您可以通过在您的iPhone应用程序中